Frage

Ich versuche, eine Liste von ganzen Zahlen in eine SQLTemplate IN-Klausel zu binden, etwa so:

SELECT * FROM table1 WHERE id IN ( #bind($idList) );

Ich habe eine Reihe von ids:

idList = "1, 2, 3, 4";

Ich kann nicht die Bindung erhalten, um erfolgreich zu arbeiten, hat es keine Werte zurückgibt, wenn ich in der Zeichenfolge als eine Liste von IDs übergeben zu überprüfen.

Ich bin mit String-Verkettung verwenden, um diese (nicht ideal) ausgeführt werden.

Alle Ideen, wie ich es bekommen konnte zu binden, richtig?

Vielen Dank im Voraus.

(Ich bin mit Java / Cayenne / Postgres, und läuft die Abfrage mit der idlist als Parameter übergeben, dies ist ein vereinfachtes Beispiel, nicht die tatsächliche SQL mir läuft).

UPDATE Ich habe herausgefunden, wie es geht. Antwort unten.

War es hilfreich?

Lösung

OK, fand ich heraus, wie es so schnell zu tun, wie ich die Frage gestellt.

Statt einen String zu haben, um eine Liste von ganzen Zahlen wie folgt:

List<Integer> ids = {1,2,3,4,5} (pseudocode) 

Und die binden zu tun, müssen Sie wie folgt vor:

SELECT * FROM table1 WHERE id IN ( #bind($idList, 'INTEGER') );

Dann in den Parametern wie gewohnt passieren und es wird funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top