【问题标题】:DataSet with many OR clauses具有许多 OR 子句的数据集
【发布时间】:2011-01-24 21:35:28
【问题描述】:

我在 Visual Studio 设计器中创建的查询遇到了一点问题。

对于同一列,我需要一个包含大量“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 子句吗?

非常感谢您的帮助。

【问题讨论】:

标签: sql visual-studio dataset


【解决方案1】:

当使用参数执行 IN 时,它的用法如下所示,基本相同。

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

【讨论】:

  • 感谢您的回答。它非常奇怪。当我使用@MachineryIDs 参数尝试它时(并用值'1111'、'2222、'3333'填充它)它不起作用。不返回任何行。如果我删除 @MachineryIDs 参数并写入 [MachineryID] IN ('1111','2222','3333') 它工作正常。所以参数@MachineryIDs 有问题。你有同样的问题吗?再次感谢;)
  • 当您使用@MachineryIDs 时,查询可能会解析为: IN ('1111, 2222, 3333') - 注意 ' 仅在字符串的开头和结尾附近?它应该在列表中的每个项目附近 IN('1111', '2222', '3333')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多