我有这样的事情:
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
222
999
如何仅获得“ id_indirizzo = 2”的“ cod_uic”?结果将是:
cod_uic
999
非常感谢你。
最佳答案
使用谓词,即:
@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')