【发布时间】:2023-03-26 15:58:02
【问题描述】:
我正在对 SQL Server 2012 中的 XML 数据类型列执行查询。数据示例如下:
<ns:Resume xmlns:ns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume">
<ns:Name>
<ns:Name.Prefix></ns:Name.Prefix>
<ns:Name.First>Shai</ns:Name.First>
<ns:Name.Middle></ns:Name.Middle>
<ns:Name.Last>Bassli</ns:Name.Last>
<ns:Name.Suffix></ns:Name.Suffix>
</ns:Name>
...
</ns:Resume>
我正在尝试编写一个查询来返回名字。
此查询按预期返回名字列表:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT [Resume].query('(//ns:Name.First)').value('.[1]', 'nvarchar(100)')
FROM HumanResources.JobCandidate;
但是,此查询返回错误:
WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume' AS ns)
SELECT [Resume].value('(//ns:Name.First)[1]', 'nvarchar(100)')
FROM HumanResources.JobCandidate;
错误:
消息 9314,第 16 级,状态 1,第 2 行
XQuery [HumanResources.JobCandidate.Resume.value()]:无法隐式原子化或将“fn:data()”应用于复杂内容元素,在推断类型“(元素(ns{http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume} :Name.First,xs:string) | element(ns{http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/Resume}:Name.First,xs:anyType)) ?'.
我在这里缺少一些基本的理解,但我不确定它是什么。有人可以启发我吗?为什么第二个查询返回错误?
【问题讨论】:
标签: sql xml sql-server-2012