如何参数化包含IN具有可变数量参数的子句的查询,比如这个?
SELECT * FROM Tags
WHERE Name IN ('ruby','rails','scruffy','rubyonrails')
ORDER BY Count DESC
Run Code Online (Sandbox Code Playgroud)
在此查询中,参数的数量可以是1到5之间的任何值.
我不希望为此(或XML)使用专用存储过程,但如果有一些特定于SQL Server 2008的优雅方式,我对此持开放态度.
我有一个SQL Server存储过程,我想将一个varchar逗号分隔的值传递给一个IN函数.例如:
DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';
SELECT *
FROM sometable
WHERE tableid IN (@Ids);
Run Code Online (Sandbox Code Playgroud)
这当然不起作用.我收到错误:
将varchar值'1,2,3,5,4,6,7,98,234'转换为数据类型int时转换失败.
如何在不诉诸构建动态SQL的情况下完成此任务(或相对类似的东西)?