如何在sql中从xml中选择所有节点?
XML:
<value>
<TradeId>5555</TradeId>
<Account>SomeAccount</Account>
<Book>1</Book>
<LocalCcy>XXXX</LocalCcy>
<ValuationCcy>XXXX</ValuationCcy>
<PVLocal>44444444</PVLocal>
<PresentValue>44444444</PresentValue>
<InstrumentCode>XXXXXXXXX</InstrumentCode>
</value>
我的SQL(不起作用):
SELECT tradeRef.value('.','varchar(50)') AS strValue
FROM @xmlData.nodes('data/value') AS trades(tradeRef)
CROSS APPLY tradeRef.nodes('.') AS legColumns(nameRef)
这给了我所有的值,但在一行中…我希望每个值有一行..
你能帮助我吗?
编辑:
请求的输出(这里只有前两个节点…):
最佳答案
您可以尝试以下方法:
declare @xmlData xml
select @xmlData = '<data><value>
<TradeId>5555</TradeId>
<Account>SomeAccount</Account>
<Book>1</Book>
<LocalCcy>XXXX</LocalCcy>
<ValuationCcy>XXXX</ValuationCcy>
<PVLocal>44444444</PVLocal>
<PresentValue>44444444</PresentValue>
<InstrumentCode>XXXXXXXXX</InstrumentCode>
</value></data>'
select
t.c.value('./text()[1]', 'nvarchar(100)') as strValue
from @xmlData.nodes('//value/child::node()') as t(c)
关于sql - 从sql中的XML中全选,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29845269/