1

对于我无法控制的情况,我有一系列值:

@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 连接在一起,我如何从中选择行?

4

1 回答 1

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.

于 2013-04-08T19:29:46.957 回答