0
我在下面的格式在SQL表輸入數據:解析XML,並通過SQL查詢生成新行
ID Text
1 <Key><Name>Adobe</Name><Display>Ado</Display></Key><Key>.....</Key>
2 <Key><Name></Name><Display>Microsoft</Display><Version>1.1</Version></Key>
可以有多個按鍵的每個ID.There可以在一個表幾千行以上述格式。我要生成以下格式的最終sql輸出
ID Name Display Version
1 Adobe Ado
1 xyz yz 1.2
2 Microsoft 1.1
我正在使用下面的查詢來解析文本列,但獲取一行中的所有數據。如何按上述方式將這些數據分成多行。
SELECT
CAST(CAST(Text AS XML).query('data(/Key/Name)') AS VARCHAR(MAX)) AS Name,
CAST(CAST(Text AS XML).query('data(/Key/Display)') as VARCHAR(MAX)) AS DisplayName,
CAST(CAST(Text AS XML).query('data(/Key/Version)') AS VARCHAR(MAX)) AS Version
FROM
ABC where ID = 1
目前我正在爲每個ID在一次運行此查詢。有沒有辦法一起運行所有的ID?另外,還有沒有其他有效的方法來獲得所需的輸出。
如果包含XML數據的列不是xml類型,該怎麼辦?在我的情況下,包含XML數據的列是nvarchar類型,所以我得到錯誤,因爲「XMLDT方法'節點'只能在xml類型的列」 – Anks
@Anks上調用,更新了我的答案。 –