我正在查询Xml
SQL 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)
现在我知道我可以通过(如下)之类的方法获得正确的结果,但是有没有办法通过使用.value
方法中的路径而不声明 3 个单例来返回所有元素结果,或者该.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