如何为int列使用字符串值的SQL IN语句?

时间:2013-04-08 19:26:49

标签: sql-server-2008

对于我手中的情况,我有一串价值观:

@param1 = "1,2,3,4";

如何在IN语句中检查ID是否在我的字符串@ param1中?

所以,它看起来像这样:

select * from table1 where ID IN (@param1);

通常情况下,我想我应该这样:

select * from table1 where ID IN (1,2,3,4);

但不幸的是,在我的情况下,我根本就没有这个,相反,我只有一个类型字符串的参数连接了我的所有ID,如何从中选择行?

1 个答案:

答案 0 :(得分:2)

您可以使用动态生成的SQL语句(DEMO):

declare @sql varchar(max)

set @sql = 'select * from table1 where ID IN (' + @param1 + ')'
exec(@sql)

这个想法是通过将ID列表连接到SQL语句中来在字符串变量中构建SQL语句。最终语句看起来像您预期的查询:

select * from table1 where ID IN (1,2,3,4)

然后,您可以使用exec将字符串变量的内容作为SQL命令运行。