T-SQL多值参数XML仅执行第一个值

时间:2017-06-23 19:18:18

标签: sql-server xml tsql stored-procedures

我正在使用XML解析将多个参数值传递给存储过程。

创建存储过程的代码:

CREATE PROCEDURE[dbo].[test] @PARAM varchar(max)
AS
DECLARE @PARAMXML AS XML
SET @PARAMXML = cast(('<A>'+replace(@PARAM,',' ,'</A><A>')
                 +'</A>') AS XML)

调用参数的代码:

WHERE Field IN (SELECT A.value('.','varchar(max)') FROM @PARAMXML.nodes('A') AS FN(A)

执行参数的代码:

exec dbo.test 'Hello, Goodbye, Welcome'

这只会导致“你好”。被传递和执行没有错误。不再处理再见和欢迎。这是为什么?我用这个例子: https://raresql.com/tag/sql-server-passing-multiple-values-through-one-parameter-in-a-stored-procedure/

1 个答案:

答案 0 :(得分:3)

问题是,除了第一个单词之外,逗号分割的结果都有前导空格(demo),因此你的字符串比较不匹配。

尝试删除空格:

M

或者删除这里的空格:

R