Tsql 有没有办法生成要在WHERE in()中使用的字符串?

Tsql 有没有办法生成要在WHERE in()中使用的字符串?,tsql,Tsql,我正在使用SQLServer2005 我正在使用一些字符串函数生成一个始终采用以下格式的字符串: 号码,号码,号码,号码 我正在尝试使用生成的字符串,如下所示: select LastName from User Where ID in ( subtring(<returning the format shown above>) ) 从用户中选择LastName 我在哪里( 子字符串() ) 我不断得到错误: Msg 8114,第16级,第5状态,第3行 将数据类型varcha

我正在使用SQLServer2005

我正在使用一些字符串函数生成一个始终采用以下格式的字符串:

号码,号码,号码,号码

我正在尝试使用生成的字符串,如下所示:

select LastName from User 
Where ID in (
subtring(<returning the format shown above>)
)
从用户中选择LastName
我在哪里(
子字符串()
)
我不断得到错误: Msg 8114,第16级,第5状态,第3行 将数据类型varchar转换为数字时出错

这是有道理的,如果IN()是以字符串形式传递的,那么它将不起作用,因为它通常接受逗号分隔的真整数

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


谢谢大家!

动态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

请参见

此方法可能重复的警告是,它可能容易受到SQL注入攻击。