有什么方法可以构建在WHERE IN()中使用的字符串吗?

时间:2011-01-16 04:29:25

标签: tsql

我正在使用SQL Server 2005。

我正在使用一些字符串函数来生成一个总是采用这种格式的字符串:

数,数字,数字,数字

我试图像这样使用这个生成的字符串:

select LastName from User 
Where ID in (
subtring(<returning the format shown above>)
)

我一直收到错误: Msg 8114,Level 16,State 5,Line 3 将数据类型varchar转换为数字时出错。

这是有道理的,如果在字符串中传递WHERE IN(),它就不会起作用 - 因为它通常接受逗号分隔的真实整数。

有没有办法完成我在这里尝试的事情?

谢谢!

1 个答案:

答案 0 :(得分:1)

动态SQL应该可以解决问题。

declare @ids varchar(100) set @ids = '1,2,3,4,5,6,7'

declare @sql nvarchar(200) set @sql = N'select LastName from User Where ID in (' + @ids + N')'

exec sp_executesql @sql

请参阅http://msdn.microsoft.com/en-us/library/aa933299(v=sql.80).aspx