簡體   English   中英

Xquery需要一個單例:列名是一個屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM