2017-02-24 122 views
2

我需要一些幫助從存儲XML數據的nvarchar(max)列中提取數據。從Nvarchar(MAX)返回XML數據

以下是樣本數據。

<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

不知道我理解你爲什麼鑄造XML如果你說的列存儲XML類型? – user2065377

+0

如果您需要XML數據作爲關係,您可以查看這篇文章http://stackoverflow.com/questions/38826788/read-value-from-a-complex-xml-structure-using-sql-server?rq=1 – user2065377

+0

出於好奇,你是否首先嚐試在CAST AS VARCHAR(4000)中包裝值來「下調」它? – 3BK

回答

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 
+0

這樣做。感謝您的幫助 – WillG771

+0

很高興聽到!如果這是您的正確解決方案,請接受我的回答。謝謝! –