在存储过程中,我将“ Name IN(@NameList))作为条件之一。
参数声明为@NameList varchar(100) = ''
当我使用EXEC myProc @NameList='''a'''
之类的字符串执行过程时
该过程什么也不返回,但是当我用诸如'a'
这样的硬编码值替换参数时,它成功了。
我在SP内放了一个PRINT语句,它精确地打印了'a'
这是怎么了?
谢谢
答案 0 :(得分:1)
请也阅读我的评论,但一种解决方案是将用逗号分隔的字符串拆分成一个表,然后加入该表:
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)