Sql-Server
XQquery 用於 XML 中所有特定元素的特定屬性
我正在尋找一個查詢以從以下範例 XML 中獲取元素“PRODUCT”的所有屬性值“NetAmount”:
<ROOT> <CATEGORY name="A"> <PRODUCT NetAmount="10.50"/> <PRODUCT NetAmount="20.50"/> </CATEGORY> <CATEGORY name="B"> <PRODUCT NetAmount="30.50"/> <PRODUCT NetAmount="40.50"/> <PRODUCT NetAmount="75.50"/> </CATEGORY> </ROOT>
對於我的場景,XML 是儲存在表還是變數中都沒有關係。
我嘗試了幾種不同的方法,但都失敗了。
樣本:
SELECT NetAmount.value('(@NetAmount)[1])','varchar(250)') AS Products FROM @x.nodes('//ROOT/Category/Product') AS P(NetAmount)
我通常會收到以下對我來說毫無意義的錯誤消息:
消息 2370,級別 16,狀態 1,行 5 XQuery
$$ value() $$:在 XQuery 表達式的末尾不再需要標記。成立: ‘)’。
差不多明白了:
select d.lin.value('./@NetAmount', 'decimal(10,2)') as Amount from t cross apply data.nodes('ROOT/CATEGORY/PRODUCT') as d(lin);
| 金額 | | :----- | | 10.50 | | 20.50 | | 30.50 | | 40.50 | | 75.50 |
db<>在這裡擺弄