Ist es möglich, concat strings in SOQL?
Gelesen habe ich den thread aus 2005 und die Menschen sagten, SOQL unterstützt keine string-Verkettung.
Aber Frage mich, ob es unterstützt wird und jemand der dies getan hat.
Ich versuche, concat, aber kein Glück 🙁
Unten ist APEX code versuchen zu finden der Datensatz mit der angegebenen E-Mail.
String myEmail = '[email protected]';
String foo = 'SELECT emailTo__c, source__c FROM EmailLog__c
WHERE source__c = \'' +
myEmail + '\';
Database.query(foo)
Obwohl der Datensatz wird zwar in der Datenbank, ist es nicht die Abfrage nichts. Debug zeigt
"Zeile(0)" die leere ist zurückgekehrt.
Mache ich concat falsche Weg?
UPDATE
Ich habe gerade einen Weg gefunden, nicht in einfachen Anführungszeichen. Nur notwendig ist, um denselben Doppelpunkt variable sogar für die Zeichenfolge Abfragen.
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);
Diese funktioniert auch und ist notwendig, wenn die WHERE-Klausel enthält, die DateTime-da DateTime nicht umgeben Sie mit Anführungszeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum verwenden Sie Datenbank.query()? Dinge werden viel einfacher und schneller wenn Sie verwenden normale Abfragen in Klammern
[SELECT emailTo__c, source__c FROM EmailLog__c WHERE source__c = :myEmail]
Nicht zu erwähnen, dass parameter-Bindung anstelle von string-Verkettung bedeutet, dass Sie sich keine Gedanken über SQL-injections etc.. Bitte überlegen Sie sich diese Abfragen in Klammern, Sie seltsam Aussehen in beginnign aber sparen Sie Ihren Hintern mehrfach (falsch geschriebenen Feldnamen etc).
Als für die eigentliche Verkettung - es funktioniert wie du es beschrieben hast, ich bin mir nur unsicher über die Notwendigkeit, zu entkommen Apostrophe. Die Bindung der Variablen ist der sicherste Weg zu gehen.
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_dynamic_soql.htm
http://www.salesforce.com/us/developer/docs/api/index_Left.htm#CSHID=sforce_api_calls_soql.htm/StartTopic=Content%2Fsforce_api_calls_soql.htm/SkinName=webhelp
[SELECT Id FROM EmailLog__c WHERE column1 = :input1 AND colum2 = input2]
... Aber der Züchter Logik, die Sie setzen werde, die weniger lesbar Abfrage... Also ja, in deinem Fall dynamische Abfrage sah aus wie eine gute Wahl. Aber ich habe noch eine weitere option für Sie: full-text search. Suche Dokumentation für SOSL. salesforce.com/us/developer/docs/apexcode/... und meine Antwort stackoverflow.com/questions/3122038/how/3139653#3139653 (teilweise über controller).