如何在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/

10-11 05:06
查看更多