我有这样的事情:
DECLARE @myDoc xml
Set @myDoc =
'<dati_indirizzi>
<ind_generico>
<id_indirizzo>1</id_indirizzo>
<indirizzo>Via Magenta, 41/43</indirizzo>
<nazione>
<cod_uic>222</cod_uic>
<nazione>CLIPPERTON</nazione>
</nazione>
</ind_generico>
<ind_generico>
<id_indirizzo>2</id_indirizzo>
<indirizzo>Via Magenta, 41/43</indirizzo>
<nazione>
<cod_uic>999</cod_uic>
<nazione>CLIPPERTON</nazione>
</nazione>
</ind_generico>
<ind_generico>
<id_indirizzo>3</id_indirizzo>
<indirizzo>Via Magenta, 41/43</indirizzo>
</ind_generico>
</dati_indirizzi>'
SELECT Mydoc.cod_uic.value('.', 'varchar(255)') as 'cod_uic'
FROM @myDoc.nodes('/dati_indirizzi/ind_generico/nazione/cod_uic') as Mydoc(cod_uic)
结果是:
如何才能获得“cod_uic”,其中“id_indirizzo = 2”?结果将是:
非常感谢。
答案 0 :(得分:2)
使用谓词,即:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo = 2]/nazione/cod_uic')
如果您有预定义变量,例如:declare @id int = 2
,则使用sql:variable()
函数:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo = sql:variable("@id")]/nazione/cod_uic')
答案 1 :(得分:0)
更新xpath:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo=''2'']/nazione/cod_uic')