如果在其他地方回答了这个问题,我们深表歉意。我不断收到错误消息
XQuery [Mytable.XMLData.nodes()]:没有名为“Answer”的元素
SELECT
ref.value('/','nvarchar(1000)')
FROM Mytable CROSS APPLY xmldata.nodes('Answer') R(ref)
——
--XML of Row
<Answer xmlns="http://TempNameSpace.com/AnswerData.xsd" Type="Deliverable">
<Deliverable>
<Title>test</Title>
<Description>test</Description>
<DueDate>2010-02-16T08:59:59</DueDate>
</Deliverable>
</Answer>
我已经尝试了几种不同的变体来获取根节点(“答案”)或任何子节点
但是,如果我将声明更改为阅读
SELECT
ref.value('/','nvarchar(1000)')
FROM Mytable CROSS APPLY xmldata.nodes('/') R(ref)
我得到了结果
testtest2010-02-16T08:59:59
我最终会喜欢表格格式的数据,比如
SELECT
ref.value('/Title','nvarchar(1000)') as Title
ref.value('/Description','nvarchar(1000)') as Description
etc..
FROM Mytable CROSS APPLY xmldata.nodes('/Deliverable') R(ref)
谢谢你的帮助
最佳答案
您没有注意正在使用的 XML 命名空间:
<Answer xmlns="http://TempNameSpace.com/AnswerData.xsd" Type="Deliverable"
**********************************************
您需要在查询时考虑到这一点 - 执行以下操作:
;WITH XMLNAMESPACES('http://TempNameSpace.com/AnswerData.xsd' AS ns)
SELECT
ref.value('(ns:*)[1]', 'nvarchar(1000)')
FROM Mytable
CROSS APPLY xmldata.nodes('/ns:Answer') R(ref)
您需要引用
<Answer>
中的所有内容与 ns:
XML 命名空间前缀。
关于sql - 如何让 SQL Server XQUERY 返回 "There is no element named [Element]"以外的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2359289/