我需要从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
非常感谢你。
答案 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)