我知道已經有關於MS的T-SQL查詢XML無數話題,但與所有的樣品,我不能讓我的查詢才能正常工作。解析XML在T-SQL
我有下面的XML:
<group>
<items>
<groupitem>
<key>23137</key>
</groupitem>
<groupitem>
<key>23139</key>
</groupitem>
<groupitem>
<key>23151</key>
</groupitem>
<groupitem>
<key>23153</key>
</groupitem>
</items>
</group>
我想所有的「鑰匙」的項目,這樣我就可以將它們插入到一個表(SO 4行)
我開始把我的XML爲可變@xml並運行此查詢:
SELECT doc.value('(key/text())[1]', 'nvarchar(255)') AS 'key'
FROM @xml.nodes('/group/items/groupitem/*') AS ref(doc)
這給了我4個空行,如果我刪除[1],它給了我這個錯誤:「XQuery的[值()]:「* value()'需要一個單例(或者空seque NCE),發現類型的操作數 'XDT:untypedAtomic類型'「
然後我嘗試這樣的:
SELECT doc.value('(/group/items/groupitem/key)[1]', 'nvarchar(255)') AS 'key'
FROM @xml.nodes('/group/items/groupitem/*') AS ref(doc)
這實際上給了我一些數據,但不幸的是,它的4倍相同的密鑰23137,可能由聲明中的[1]引起。然而,刪除它會讓我回到以前的相同錯誤信息。
我知道我應該怎麼辦呢在XPath(/組/項目/ groupitem /鍵),但不能讓我的身邊,我應該怎麼做,在T-SQL頭。有任何想法嗎?
你有任何理由在'.nodes()'中將XPath表達式的末尾加上星號嗎?你是否期待不同的元素? – Shnugo