2010-03-08 19 views
3

我在Visual Studio Designer中创建的查询有一点问题。具有许多OR子句的数据集

我需要一个包含大量'OR'的查询。

我找到了运营商'IN',但我不知道如何使用,在Visual Studio的设计师:

IN

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

我试图做这样:

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

但这不起作用。

是否有另一种方法来处理很多OR子句?

非常感谢您的帮助。

+0

入住这太问题:?参数化IN子句SQL](http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause) – zendar 2010-03-08 09:05:16

回答

1

使用参数进行IN操作时,它的用法如下,基本相同。

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

谢谢您的回答。 它非常奇怪。当我用@MachineryIDs参数(并用值'1111','2222,'3333'填充它)尝试它时,它不起作用。没有行被返回。 如果我删除@MachineryIDs参数并写入[MachineryID] IN('1111','2222','3333'),它工作正常。 因此,参数@MachineryIDs有问题。 你有同样的问题吗? 再次感谢;) – Silvan 2010-03-08 10:31:39

+1

当您使用@MachineryIDs查询可能会解决: IN('1111,222,3333') - 注意'只在你的字符串的开头和结尾?它应该在列表IN('1111','2222','3333')中的每个项目周围 – Leslie 2010-03-08 16:30:19