[英]XQuery Error when reading attribute from parentnode with *typed* XML (value() requires a singleton)
[英]Xquery requires a singleton :the column name is an attribute
DECLARE @XML XML
SET @xml = '
<root>
<a>
<b nm="DATE OF BIRTH"> 19871224</b>
<b nm="DRIVER"> MIKE </b>
</a>
<a>
<b nm="DATE OF BIRTH"> 19881124</b>
<b nm="DRIVER"> TOM </b>
</a>
<a>
<b nm="DATE OF BIRTH"> 19770601</b>
<b nm="DRIVER"> DAVID </b>
</a>
</root>'
select
pd.value('//b[@nm="DATE OF BIRTH"][1]','varchar(100)')
from
@xml.nodes('//a') as x(Rec)
cross apply
@xml.nodes('//a/b') as i(pd)
我想通过使用XQUERY来解析简单的内容。 我总是会收到这样的错误。 我为此奋斗了好几天。 原因是列名是一个属性。 谢谢。
消息2389,第16层,状态1,第23行
XQuery [value()]:'value()'需要一个单例(或空序列),找到类型为'xdt:untypedAtomic *'的操作数
我想收到的结果是
DATE_OF_BIRTH DRIVER
---------------------------
19871224 MIKE
19881124 TOM
19770601 DAVID
尝试这个:
select
Date_of_Birth = pd.value('(b[@nm="DATE OF BIRTH"])[1]', 'varchar(50)'),
Driver = pd.value('(b[@nm="DRIVER"])[1]', 'varchar(50)')
from
@xml.nodes('/root/a') as i(pd)
基本上,您选择<root>
下的所有<a>
元素,并为每个元素选择包含两个@nm
属性之一的包含的<b>
元素,以获取详细信息。
为我产生所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.