SQL XML 选择 where 子句
我有这样的结果:
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
非常感谢。
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:
cod_uic
222
999
How can I get only the "cod_uic" where "id_indirizzo=2"? The result would be:
cod_uic
999
Thank you very much.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用谓词,即:
如果您有预定义变量,例如:
declare @id int = 2
,则使用sql:variable()
函数:Use predicate, i.e.:
If you have predefined variable, e.g.:
declare @id int = 2
, then usesql:variable()
function:更新 xpath:
Update the xpath: