我有一个字符串,其中包含一个逗号分隔的 id 列表,我想在 where 子句中使用它。
我怎样才能实现这个目标?基本上我有:
set @ids = '5,8,14,5324,'
SELECT * FROM theTable WHERE Id IN (@ids)
但是 @ids 是 varchar,Id 是 int。
非常感谢任何想法。
最佳答案
替代动态 SQL 的另一种选择是将 @ids 解析为 #TempTable(解析函数的一个示例是 here ),然后加入它。
select *
from theTable t1
inner join #TempTable t2
on t1.Id = t2.Id
或者你可以完全绕过#TempTable(以下代码假设解析函数来自上面的链接)
select *
from theTable t1
inner join dbo.fnParseStringTSQL(@ids, ',') t2
on t1.Id = cast(t2.string as int)
关于来自连接字符串的 SQL where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3462571/