Comment puis-je utiliser un param pour les valeurs mulitple dans un "où dans" requête:Utilisation Où In avec Param
Select [..] where str in ('AB','BC')
Bien sûr, cela ne permettra pas à plusieurs valeurs:
Select [..] where str in (@param)
Comment puis-je utiliser un param pour les valeurs mulitple dans un "où dans" requête:Utilisation Où In avec Param
Select [..] where str in ('AB','BC')
Bien sûr, cela ne permettra pas à plusieurs valeurs:
Select [..] where str in (@param)
Vous besoin d'ajouter chaque paramètre en tant que valeur dans la clause IN, par exemple
where str in (@param1, @param2, @param3)
Alternativement, vous pouvez créer une requête manuellement et l'EXEC (bien que cela soit aussi très dangereux). EDIT: Donc, juste pour clarifier, puisque vous recevez une chaîne de valeurs séparées par des virgules que vous voulez utiliser dans une clause IN, vous devrez faire ce que astander a suggéré et diviser votre chaîne en une tableau que vous pourriez ensuite utiliser dans la clause.
En utilisant l'un des links Astander mentionné, vous pouvez effectuer les opérations suivantes:
select [...]
where str in (select items from dbo.split(@ItemString))
(où vos valeurs séparées par des virgules sont en @ItemString).
"Vous ne pouvez pas discuter avec un mot comme tendu!" Tigger –
Je pense que l'OP pourrait avoir l'intention que les params soient dans le seul param tel que @param = '' 'AB' ',' 'BC' '' –
Qui ne fonctionnera pas à moins que la colonne contienne cette valeur exacte (qu'elle ne devrait pas ' t). –
L'alternative à l'ajout de chaque valeur en tant que param séparée, si vous utilisez SQL Server 2008, est de passer dans un table valued parameter qui vous permettra de faire quelque chose comme:
SELECT...
FROM YourTable t
JOIN @TableParam p ON t.str = p.str
Si vous n'êtes pas en utilisant SQL 2008 et vous voulez réellement passer toutes les valeurs en une chaîne CSV, alors l'autre approche commune est d'avoir une fonction définie par l'utilisateur qui sépare la chaîne CSV et retourne une TABLE que vous pouvez ensuite rejoindre, par exemple
SELECT ....
FROM YourTable t
JOIN dbo.fnSplit(@param) s ON t.str = s.str
C'est gentil; n'était pas au courant de cela. –
OK, donc vous avez besoin d'une fonction split
et
Split Function in Sql Server to break Comma-Separated Strings into Table
et
Consultez http://www.sommarskog.se/arrays-in-sql-2005.html pour une analyse des nombreuses fonctions de division possibles.Long, mais vaut bien la lecture. –
quelle version de SQL Server utilisez-vous? – AdaTheDev