J'ai lu un thread à partir de 2005 et les gens ont dit que SOQL ne supporte pas la concaténation de chaînes. Bien que je me demande si c'est supporté et que quelqu'un l'a fait.Est-il possible de concaténer des chaînes dans SOQL?
Je suis en train de concaténer mais pas de chance :(
est le code ci-dessous APEX essayant de trouver record avec e-mail indiquée.
String myEmail = '[email protected]';
String foo = 'SELECT emailTo__c, source__c FROM EmailLog__c
WHERE source__c = \'' +
myEmail + '\';
Database.query(foo)
Même si le dossier est en effet dans la base de données, il ne pas interroger quoi que ce soit. Debug affiche "ligne (0)" qui signifie vide est retourné.
que je fais concat mauvaise façon?
MISE À JOUR
Je viens de trouver un moyen de ne pas avoir à ajouter une seule citation. Juste nécessaire d'appliquer la même variable de deux points même pour la chaîne qui a une requête.
String foo = DateTime.newInstance(......);
String bar = 'SELECT id FROM SomeObject__c WHERE createdOn__c = :foo';
List<SomeObject__c> result = Database.query(bar);
System.debug(result);
Cela fonctionne également et est nécessaire si la clause WHERE contient DateTime, car DateTime ne peut pas être entouré de guillemets simples.
L'une des raisons est parce que j'ai 3 champs et si un utilisateur spécifie un quelconque, ces champs (c'est-à-dire la colonne de la table) sont utilisés pour construire la requête. Par exemple, si l'utilisateur saisit le champ 'prénom' et 'nom de famille', la requête ressemblerait à SELECT tout FROM fooTable WHERE prénom = $ userinput ET lastname = $ userinput; –
Dans un tel cas, je ne peux concat que 'firstname = $ userinput AND' etc. –
Bien sûr, vous pouvez lier plusieurs variables '[SELECT ID FROM EmailLog__c WHERE colonne1 =: input1 ET colum2 = input2]' ... Mais la logique plus chic que vous mettrez, la requête moins lisible sera ... Alors oui, dans votre La requête dynamique de cas ressemblait à un bon choix. Mais j'ai encore une autre option pour vous: recherche en texte intégral. Recherche de documentation pour SOSL. http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/langCon_apex_SOQL.htm?SearchType=Stem et ma réponse http://stackoverflow.com/questions/3122038/how/ 3139653 # 3139653 (partie sur le contrôleur). – eyescream