Question

Je suis en train de lier une liste d'entiers dans une SQLTemplate clause IN comme ceci:

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

J'ai une chaîne de ids:

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

Je ne peux pas le lier à travailler avec succès, il ne renvoie aucune valeur quand je passe dans la chaîne comme une liste de ids pour vérifier.

Je vais avoir à utiliser la concaténation de chaîne pour exécuter ce (pas idéal).

Toutes les idées sur la façon dont je pourrais le faire pour lier correctement?

Merci d'avance.

(j'utilise Java / Cayenne / Postgres, et exécuter la requête avec le idlist passé en tant que paramètre, ceci est un exemple simplifié, pas la sql réelle que je suis en cours d'exécution).

UPDATE Je me suis dit comment le faire. Réponse ci-dessous.

Était-ce utile?

La solution

OK, j'ai découvert comment le faire dès que je posté la question.

Au lieu d'avoir une chaîne, utilisez une liste de Entiers comme ceci:

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

Et pour faire la liaison, vous avez besoin:

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

Passez ensuite dans le paramètre comme d'habitude et il fonctionnera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top