我有这样的事情:

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')

09-26 14:48