我正在使用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(),它就不会起作用 - 因为它通常接受逗号分隔的真实整数。
有没有办法完成我在这里尝试的事情?
谢谢!
答案 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