带有in子句的SQL Server sp_prepare

时间:2015-07-07 02:43:00

标签: sql-server prepared-statement

我有以下但不起作用:

declare @p1 int
exec sp_prepare @handle=@p1 output,@params=N'@id int,@name nvarchar (MAX)',
    @stmt=N'SELECT [id],[name] FROM [dbo].[channel] WHERE [name] IN (@name)'
select @p1
exec sp_execute @handle=1,@id=NULL,@name=N'''nisse'',''pelle'''

有没有办法像上面那样做,或者我被迫参数化数组中的每个值?

我不能使用其他表格,功能或更改where@name参数以外的查询。

1 个答案:

答案 0 :(得分:0)

您可能会发现参数化单个值是最好的,但还有其他解决方案。

一个简单的问题是:

where ',' + @name + ',' like '%,' + name + ',%'

但是,这不能使用索引。

另一种方法是从网上获取split()功能(很多都在那里:google“split sql server”):

where name in (select val from dbo.split(@name, ',') as s(val))