我正在尝试运行查询,以便行集将返回元素的内容。下面是我的查询,以及XML列中的数据样本。列Address中返回的内容全是NULL。但我知道表中的元素中有数据。我做错了什么。
WITH XMLNAMESPACES( 'http://schemas.xmlsoap.org/soap' AS "soap")
SELECT
Data.value('(/soap:Envelope/soap:Body/Report/Location/Address/node())[1]', 'nvarchar(max)') as Address
FROM Mytable
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Report>
<Location>
<Address>600 BENNETT ST</Address>
</Location>
</Report>
<soap:Body>
<soap:Envelope>
答案 0 :(得分:0)
我认为你有一个错误的XML命名空间 - 你错过了结束.../envelope
。此外,似乎你不能在XQuery中使用“soap”作为XML命名空间别名 - 不知道为什么。
试试这个:
;WITH XMLNAMESPACES('http://schemas.xmlsoap.org/soap/envelope/' AS se)
SELECT
Data.value('(/se:Envelope/se:Body/Report/Location/Address/text())[1]', 'nvarchar(max)')
AS 'Address'
FROM Mytable
在我的测试用例中,这种方式似乎有效。