2

私は以下のようなXQueryを持っています

DECLARE @x XML
SELECT @x = '<PartnerEmails>
<Email>a@xxxx.com</Email>
<Email>b@xxxx.com</Email>
</PartnerEmails>'
SELECT @x.query('data(PartnerEmails/Email)').value('.','varchar(100)') AS Val

実際の出力:

Val
a@xxxx.com b@xxxx.com

期待される出力

a@xxxx.com
b@xxxx.com

つまり、2つの異なる行にあります。

そうする方法は?

4

2 に答える 2

4

これを使って:

SELECT 
    node.value('.','varchar(100)') AS Val
FROM
    @x.nodes('/PartnerEmails/Email') AS PE(Node)    

内部に複数のノードがあるため、この関数を使用してXMLフラグメントの「インライン」テーブルを作成する<PartnerEmails>必要があります。そのテーブルの各「行」には、クエリを実行できる(そして、XMLノードの内容を抽出できる)1つのノードが含まれています。 。.nodes()<Email>

于 2012-06-08T12:53:13.293 に答える
1
DECLARE @x XML
SELECT @x = '<PartnerEmails>
<Email>a@xxxx.com</Email>
<Email>b@xxxx.com</Email>
</PartnerEmails>'

SELECT   ColumnValue.value('.','varchar(1000)')  as Val            
FROM @x.nodes('/PartnerEmails/Email') as Table1(ColumnValue) 
于 2012-06-08T13:04:57.577 に答える