[英]Selecting XML Data from SQL query - No values returned
Xml列不返回任何行。
下面創建了一個表類型和插入該表的xml值。 執行以下提到的兩個查詢后,將不返回任何值。
xml數據是有效數據。
DECLARE @Test TABLE (Id INT IDENTITY (1,1), XMLDATA XML)
INSERT INTO @test
SELECT '
<TXLife xmlns="http://ACORD.org/Standards/Life/2" xmlns:tx="http://ACORD.org/Standards/Life/2" Version="2.20.00">
<TXLifeRequest PrimaryObjectID="Holding_1">
<CorrelationGUID>4b30545a-158b-441a-a37a-0b259f757059</CorrelationGUID>
</TXLifeRequest>
</TXLife>'
SELECT
Id
, XMLDATA.query('//CorrelationGUID') AS 'TransType'
, XMLDATA
FROM @test
SELECT C.value('./CorrelationGUID[1]', 'varchar(50)') AS 'TransType'
FROM @test
CROSS APPLY XMLDATA.nodes('/TXLife/TXLifeRequest') n (C)
試試這個-
DECLARE @XML XML
SELECT @XML = '
<TXLife xmlns="http://ACORD.org/Standards/Life/2" xmlns:tx="http://ACORD.org/Standards/Life/2" Version="2.20.00">
<TXLifeRequest PrimaryObjectID="Holding_1">
<CorrelationGUID>4b30545a-158b-441a-a37a-0b259f757059</CorrelationGUID>
</TXLifeRequest>
</TXLife>'
;WITH XMLNAMESPACES (DEFAULT 'http://ACORD.org/Standards/Life/2')
SELECT t.c.value('CorrelationGUID[1]', 'UNIQUEIDENTIFIER')
FROM @XML.nodes('//TXLifeRequest') t(c)
輸出-
------------------------------------
4B30545A-158B-441A-A37A-0B259F757059
好吧,如果我在此處和此處使用CREATE TABLE
測試您的代碼,則未經過濾的選擇效果很好。 但是,第二個篩選的選擇不返回任何結果。
如果我更改查詢以指定正確的名稱空間,例如@Devart的答案,
WITH XMLNAMESPACES (DEFAULT 'http://ACORD.org/Standards/Life/2')
SELECT
C.value('./CorrelationGUID[1]', 'varchar(50)') AS 'TransType'
FROM
Test
CROSS APPLY
XMLDATA.nodes('/TXLife/TXLifeRequest') n (C)
您可以看到, 它按預期工作 。
您需要聲明名稱空間。 嘗試這個:
SELECT
XMLDATA.value('declare namespace L="http://ACORD.org/Standards/Life/2";(//L:CorrelationGUID)[1]',
'UNIQUEIDENTIFIER') AS 'TransType'
FROM @test
UNION ALL
SELECT
C.value('declare namespace L="http://ACORD.org/Standards/Life/2";(./L:CorrelationGUID)[1]',
'UNIQUEIDENTIFIER') AS 'TransType'
FROM @test
CROSS APPLY
XMLDATA.nodes('declare namespace L="http://ACORD.org/Standards/Life/2";/L:TXLife/L:TXLifeRequest') N(C)
看到它在這里工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.