Я пытаюсь получить правильную информацию из типа данных XML в обычные скалярные переменные в зависимости от условий, однако у меня возникают проблемы с получением правильной информации.
Вот XML I Я ищу:
<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>
В основном мне нужно получить числа из <'F116'>, но только если <'F98_1'> равно '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'
Но иногда это возвращает значение из <'F116'>, даже если <'F98_1'> равно '45'.
Есть предложения? Спасибо.