Reputation: 497
I have something like this:
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)
The result is:
How can I get only the "cod_uic" where "id_indirizzo=2"? The result would be:
Thank you very much.
Upvotes: 2
Views: 2988
Reputation: 56162
Use predicate, i.e.:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo = 2]/nazione/cod_uic')
If you have predefined variable, e.g.: declare @id int = 2
, then use sql:variable()
function:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo = sql:variable("@id")]/nazione/cod_uic')
Upvotes: 2
Reputation: 5251
Update the xpath:
@myDoc.nodes('/dati_indirizzi/ind_generico[id_indirizzo=''2'']/nazione/cod_uic')
Upvotes: 0