【发布时间】:2020-05-06 14:09:53
【问题描述】:
我正在尝试根据条件将 XML 数据类型中的正确信息转换为常规标量变量,但是我无法获取正确的信息。
这是我正在搜索的 XML:
<Loop2420>
<NM1>
<F98_1>PW</F98_1>
<F1065>2</F1065>
</NM1>
<N3>
<F166>81715 DOCTOR CARRE</F166>
</N3>
<N4>
<F19>INDIO</F19>
<F156>CA</F156>
<F116>92201</F116>
</N4>
</Loop2420>
<Loop2420>
<NM1>
<F98_1>45</F98_1>
<F1065>2</F1065>
</NM1>
<N3>
<F166>51250 MECCA AVE</F166>
</N3>
<N4>
<F19>COACHELLA</F19>
<F156>CA</F156>
<F116>92236</F116>
</N4>
</Loop2420>
基本上我需要从 获取数字,但前提是 等于 'PW'。
我试过了:
declare @zip varchar(30)
select @zip = T.value('(F116)[1]','varchar(30)')
from @TransactionXML.nodes('/Loop2420/N4') Trans(T)
where T.value('(/Loop2420/NM1/F98_1)[1]','varchar(30)') = 'PW'
但这有时会返回 的值,即使 等于 '45'。
有什么建议吗?谢谢。
【问题讨论】: