2010-11-22 5 views
2

Si une variable définie par l'utilisateur @x est une chaîne de nombres séparés par des virgules, par ex. '1,2,4', est-il un moyen de l'utiliser dans une fonction IN()?Utilisez une chaîne séparée par des virgules dans `IN()` dans MySQL

Plus précisément:

SET @x := '1,2,4'; 
SELECT * FROM t WHERE c IN (@x); 

ne sélectionne pas les lignes t où c est égal à 1 ou 2 ou 4.

+0

êtes-vous sûr? semblait être tout ok dans ce code – Vadyus

+0

@Vadyus - Oui, vraiment. Voir ci-dessous. – Donnie

+0

Vérifiez cela: http://stackoverflow.com/questions/10480568/comma-separated-values-in-mysql-in-clause –

Répondre

3

Vous ne pouvez pas le faire directement en utilisant une variable. Basé sur ce que vous avez maintenant, le serveur essaie d'exécuter select * form t where c in ('1,2,3'); ... ce qui n'est clairement pas ce que vous voulez étant donné que vous vérifiez si c contient la chaîne unique donnée.

Vous devez générer un SQL dynamique basé sur votre liste pour que cela fonctionne.

+0

Assez juste. Je vais mettre les valeurs dans une table temp de Wee et joindre. –

Questions connexes