从XML字符串中检索唯一的值

时间:2017-09-27 10:17:04

标签: sql sql-server database sql-server-2008 tsql

这是我的数据类型nvarchar(MAX)的XML字符串:

declare @string Nvarchar(MAX)
set @string='<ROOT><Data  C="1" /><Data  C="2" /><Data  C="3" /></ROOT>'

预期结果:

@c='1,2,3'

i want to check that the value of "C" is exists in table or not

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码以表格格式获取值:

declare @string Nvarchar(MAX)
set @string='<ROOT><Data  C="1" /><Data  C="2" /><Data  C="3" /></ROOT>'

DECLARE @StringXML XML = CAST(@string as XML);

SELECT T.c.value('(./@C)[1]', 'INT')
FROM @StringXML.nodes('ROOT/Data') T(c);

然后,您可以应用EXIST子句。

SELECT STUFF
(
    (
        SELECT ',' + T.c.value('(./@C)[1]', 'VARCHAR(12)')
        FROM @StringXML.nodes('ROOT/Data') T(c)
        FOR XML PATH(''), TYPE
    ).value('.', 'VARCHAR(MAX)')
    ,1
    ,1
    ,''
);