我需要一些帮助从存储XML数据的nvarchar(max)列中提取数据。
以下是样本数据。
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>B1-10</string>
<string>B2-20</string>
<string>B2-20</string>
</ArrayOfstring>
我试过这个,只返回NULL然后错误输出到“XML解析:第1行,第2个字符,非法限定名字”
SELECT cast(COLUMNNAME AS xml).value('/ArrayOfString[1]/String[1]', 'VARCHAR(MAX)')
FROM dbo.TABLENAME
我在这个很棒的网站上尝试了很多想法,但似乎都有相同的结果。我在这里错过了什么?在此先感谢您的帮助。
答案 0 :(得分:1)
试试这个:
;WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/2003/10/Serialization/Arrays',
'http://www.w3.org/2001/XMLSchema-instance' AS i)
SELECT cast(COLUMNNAME AS xml).value('(/ArrayOfstring/string)[1]', 'VARCHAR(MAX)')
FROM dbo.TABLENAME