XmlSQL Server 2012 で列をクエリしています。
パスを.valueメソッドに移動すると、結果がすべてのelementインスタンスを返すわけではありません!
,c.value('(*/*/Visitors/Visitor/@Name)[1]', 'NVARCHAR(50)') AS Visitor
,c.value('(*/*/Senders/Sender/@Name)[1]', 'NVARCHAR(50)') As Sender
私はもともとnodesメソッドを使用していましたが、Wildcardパフォーマンスが殺されています
CROSS APPLY c.nodes('*') dd(d)
OUTER APPLY d.nodes(Visitors/Visitor) As ee(e)
OUTER APPLY d.nodes('Senders/Sender') ff(f)
(以下)のようなもので正しい結果を得ることができることはわかっていますが、.value3つのシングルトンを宣言せずにメソッドでパスを使用してすべての要素の結果を返す方法はありますか、それとも.nodesメソッドが複数の要素インスタンスを返す唯一の方法ですか?
ありがとう!
,c.value('(*/*/Visitors/Visitor/@Name)[1]', 'NVARCHAR(50)') AS Visitor
,c.value('(*/*/Visitors/Visitor/@Name)[2]', 'NVARCHAR(50)') AS Visitor2
,c.value('(*/*/Visitors/Visitor/@Name)[3]', 'NVARCHAR(50)') AS Visitor3
,c.value('(*/*/Senders/Sender/@Name)[1]', 'NVARCHAR(50)') As Sender
,c.value('(*/*/Senders/Sender/@Name)[2]', 'NVARCHAR(50)') As Sender2
,c.value('(*/*/Senders/Sender/@Name)[3]', 'NVARCHAR(50)') As Sender3