这是我的数据类型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
答案 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
,''
);