2
我想在SQL查詢中展平XML數據,但我似乎總是得到空值。在sql中展平XML數據
我嘗試了描述爲here的十字/外塗法。
帶有XML數據的列被稱爲Data
。
我猜這些鏈接的XML數據需要以某種方式也添加?
你能幫忙得到一個正確的SQL查詢嗎?
查詢我想:
SELECT
v.name
,pref.value('(LocalId/text())[1]', 'nvarchar(10)') as localid
FROM [database].[requests] v
outer apply v.Data.nodes('/DataForm') x(pref)
GO
該列中的XML數據的例子:
<Dataform xmlns="http://somelongasslink.org/hasalsosomestuffhere" xmlns:i="http://somexlmschemalink/">
<DeleteDate xmlns="http://somelongasslink.org/hasalsosomestuffhere" i:nil="true" />
<LocalId xmlns="http://somelongasslink.org/hasalsosomestuffhere">5325325</LocalId>
...
如果您明確想讀取'i:nil'屬性,您可能還需要定義名稱空間「xmlns:i」... Upvote from our side – Shnugo
如何處理存在多個名稱空間的情況?你提供的代碼工作(謝謝),但沒有名稱空間的其他屬性。 我的例子xml在我的情況下有點不正確,因爲localid中的鏈接命名空間與dataform不同。 – Exanimis
@Exanimis:你將不得不使用'WITH XMLNAMESPACES('.....'AS ns1,'.......'AS ns2)',然後使用XPath表達式中定義的那些前綴 –