【发布时间】:2015-08-11 07:41:42
【问题描述】:
我想从临时表#temptable 的完整列表中检索某些用户。 查询如下所示:
DECLARE @List varchar(max)
SELECT @List = coalesce(@List + ',','') + '''' + StaffCode + ''''
FROM tblStaffs
SELECT UserName
FROM #temptable
WHERE #temptable.StaffCode IN (@List)
我可以看出@List 的格式正确:
'AAA','ABB','BBB','CCC','DDD','MMM'
如果我把它改成
WHERE #temptable.StaffCode IN ('AAA','ABB','BBB','CCC','DDD','MMM')
它确实有效,那为什么不 IN (@List)?
【问题讨论】:
-
它不适用于
in ('''AAA'',''BBB'''),这确实是正在发生的事情;我相信您需要将 @List 解析为一个小临时表并加入它。 -
感谢您指出这一点。这真的是我想知道的。解决此问题的一种方法是使用 Eric 从上一个问题中回答的动态 sql:stackoverflow.com/questions/878833/…
标签: sql-server delimiter where-in