我在存储过程中有"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)