2010-03-08 6 views
3

J'ai un petit problème avec une requête que je crée dans Visual Studio Designer.DataSet avec de nombreuses clauses

J'ai besoin d'une requête avec beaucoup de clauses 'OR' pour la même colonne.

Je trouve l'opérateur 'IN', mais je ne sais pas comment l'utiliser dans le concepteur Visual Studio:

Exemple IN:

SELECT EmployeeID, FirstName, LastName, HireDate, City 
FROM Employees 
WHERE City IN ('Seattle', 'Tacoma', 'Redmond') 

J'ai essayé de le faire de cette façon:

SELECT [MachineryId], [ConstructionSiteId], [DateTime], 
     [Latitude], [Longitude], [HoursCounter] 
FROM [PositionData] 
WHERE [MachineryID] IN @MachineryIDs 

Mais cela ne fonctionne pas.

Existe-t-il un autre moyen de gérer un grand nombre de clauses OR?

Merci beaucoup pour votre aide.

+0

Cochez cette question SO: [? SQL paramétrage d'une clause] (http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause) – zendar

Répondre

1

En faisant un IN avec un paramètre, il est utilisé comme ci-dessous, fondamentalement le même.

declare @SQL varchar(600) 
set @SQL = 'select * from tbl where Cast([MachineryID] as varchar(255)) in ('+ @MachineryIDs +')' 
EXEC(@SQL) 
+0

Merci pour votre réponse. C'est très bizarre. Lorsque je l'essaie avec le paramètre @MachineryIDs (et le remplit avec les valeurs '1111', '2222,' 3333 ') cela ne fonctionne pas. Aucune ligne n'est renvoyée. Si je supprime le paramètre @MachineryIDs et que j'écris [MachineryID] IN ('1111', '2222', '3333') cela fonctionne correctement. Il y a donc un problème avec le paramètre @MachineryIDs. Avez-vous eu le même problème? Merci encore;) – Silvan

+1

lorsque vous utilisez les @MachineryIDs la requête se résout probablement à: IN ('1111, 2222, 3333') - notez le 'seulement autour du début et de la fin de votre chaîne? Il devrait être autour de chaque élément de la liste IN ('1111', '2222', '3333') – Leslie

Questions connexes