4
有關背景看這個問題:麻煩
SQL Server XML Data Type query issue
我想查詢對SQL Server的XML對象2005年查詢工作正常沒有時在XML中定義的名稱空間。但是,當名稱空間元素在那裏時,我似乎無法獲取節點元素的值。這裏有一個例子:
DECLARE @xmlWithNameSpace XML
DECLARE @xmlWithoutNameSpace XML
SET @xmlWithNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed xmlns="gizmo">
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SET @xmlWithoutNameSpace = '<?xml version="1.0" encoding="UTF-8"?>
<Feed>
<Product id="4444">
<ProductId>4444</ProductId>
</Product>
</Feed>'
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithNameSpace.nodes('declare namespace ns="gizmo"; /ns:Feed/ns:Product') feed(product)
UNION ALL
SELECT feed.product.value('@id[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
UNION ALL
SELECT feed.product.value('ProductId[1]', 'INT') AS productId
FROM @xmlWithoutNameSpace.nodes('/Feed/Product') feed(product)
這將返回
4444
NULL
4444
4444
我在做什麼錯,以獲得產品編號節點(4444)時,命名空間是在使用中的價值?
在此先感謝您的任何指導。
頂部問題很好,但底部(WITH關鍵字)在SQL-Server-2012中引發語法錯誤 - 任何想法RP? – Hardryv 2016-02-17 23:26:06
嘗試在WITH之前添加一個分號。我希望有所幫助。 – 2016-03-10 21:00:30