IN 子句具有参数在存储过程中不起作用



我在存储过程中有"Name IN(@NameList(("作为条件之一。

参数声明为@NameList varchar(100) = ''

当我使用字符串EXEC myProc@NameList='''a'''执行过程时该过程什么也不返回,但当我用像'a'这样的硬编码值替换参数时,它成功了。

我在SP里放了一个PRINT语句,它准确地打印出'a'

这里怎么了?

谢谢,

也请阅读我的评论,但一个解决方案是将逗号分隔的字符串拆分成一个表,然后连接到该表:

declare @list varchar(max) = '13,14,15,13,14,15,13'
SELECT
LTRIM(RTRIM(a.b.value('.[1]','VARCHAR(255)'))) Parish
FROM
(
SELECT CAST('<XMLRoot><RowData>' +  REPLACE(@list,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) x)t 
CROSS APPLY x.nodes('/XMLRoot/RowData')a(b)

最新更新