T-Sql
使用 SQL 查詢 XML 節點
我想我快到了,但已經陷入僵局!
我有一個相對簡單的 XML 結構,我需要將其解析為 SQL 結果集,但似乎無法使其工作。
這是程式碼:
DECLARE @xml XML; SET @xml = ' <values> <Nationality> <item> <key>UK</key> <value>def</value> </item> <item> <key>IE</key> <value>def</value> </item> </Nationality> <Currency> <item> <key>GBP</key> <value>123</value> </item> <item> <key>EUR</key> <value>345</value> </item> </Currency> </values>'; select I.X.value('(/key/text())[1]', 'int') as ItemID, I.X.value('(/value/text())[1]', 'int') as Store from @XML.nodes('/values/Nationality') as O(X) cross apply O.X.nodes('/item') as I(X);
本質上,我想從國籍中提取價值:
Key | Value ------------- UK | Def IE | Def
我可能想稍後再做貨幣,但我認為如果我破解了上述問題,那麼剩下的就足夠簡單了。
你能幫忙嗎?
根據您的輸入數據,我將執行以下操作:
select I.X.value('(key/text())[1]', 'varchar(50)') as ItemID, I.X.value('(value/text())[1]', 'varchar(50)') as Store from @XML.nodes('values/Nationality') as O(X) cross apply O.X.nodes('item') as I(X);
輸出
ItemID Store UK def IE def