【发布时间】:2018-08-27 19:57:06
【问题描述】:
这里是我的 XML 的摘录:
declare @FundXML XML
set @XML='<Transaction>
<TransactionID>58265226</TransactionID>
<SettlementCurrency>USD</SettlementCurrency>
<SettlementAmount>
<Amount ccy="EUR" isFundCcy="true">-1603375.03</Amount>
<Amount ccy="USD">-1890218.82</Amount>
</SettlementAmount>
</Transaction>'
我想检索 ccy="Tag SettlementCurrency" 的标签 Amount 的值
如果我硬编码“美元”,那么它给了我正确的价值:
select trx.col.value('./SettlementCurrency[1]', 'nvarchar(20)') Settccy,
trx.col.value('(./SettlementAmount[1]/Amount[@ccy="USD"])[1]', 'nvarchar(20)') AmountInccy
from @xml.nodes('/Transaction') Trx(col)
但是我想编写类似的代码
select trx.col.value('./SettlementCurrency[1]', 'nvarchar(20)') Settccy,
trx.col.value('(./SettlementAmount[1]/Amount[@ccy=./SettlementCurrency[1]])[1]', 'nvarchar(20)') AmountInccy
from @Fundxml.nodes('/Transaction') Trx(col)
你能帮我写一个相对路径吗? 我正在使用 SQL Server 2008。
谢谢
【问题讨论】:
标签: xml tsql xpath xml-parsing xquery