我有以下但不起作用:
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
参数以外的查询。
答案 0 :(得分:0)
您可能会发现参数化单个值是最好的,但还有其他解决方案。
一个简单的问题是:
where ',' + @name + ',' like '%,' + name + ',%'
但是,这不能使用索引。
另一种方法是从网上获取split()
功能(很多都在那里:google“split sql server”):
where name in (select val from dbo.split(@name, ',') as s(val))