从SQL Server中提取XML文本

时间:2015-08-12 14:22:29

标签: sql sql-server xml

我需要从SQL Server中的XML中提取值。但是,如果我尝试这个查询:

select 
    xmldata.query('(/entry/accounts/account/accountid/text())')
from 
    ltr_CPC_phx_acct_balance_XML

我的XML的简短示例:

<entry timestamp="2015-08-05T10:25:54">
    <accounts>
    <account><accountid>xxxx0800USD</accountid><balance>-100,02</balance></account>
    <account><accountid>xxxx2100EUR</accountid><balance>215,36</balance></account>
    <account><accountid>xxxx4301GBP</accountid><balance>96,54</balance></account>
    </accounts>
</entry>

结果:

1. xxxx0800USDxxxx2100EURxxxx4301GBP

预期结果应该是这样的

1. xxxx0800USD
2. xxxx2100EUR
3. xxxx4301GBP

非常感谢你。

1 个答案:

答案 0 :(得分:2)

您需要使用nodes()来粉碎XML,例如:

select 
    accountid.value('.','varchar(100)') as accountid
from ltr_CPC_phx_acct_balance_XML
    OUTER APPLY xmldata.nodes('/entry/accounts/account/accountid') T(accountid)