繁体   English   中英

如何在Sql Server 2008中检索Xml节点的多个值

[英]How to retrieve multiple values of a Xml node in Sql Server 2008

看看这个Xml

<Criteres>
   <TypesOffre>
      <TypeOffre>Appartement</TypeOffre>
      <TypeOffre>Maison</TypeOffre>
   </TypesOffre>
</Criteres>

我想检索TypeOffre节点的值,并在JOIN中使用它们,如下面的语句

SELECT T2.Nom
FROM RechercheOffre T1
     INNER JOIN TypeOffre T2 ON (T1.Xml.value('(/Criteres/TypesOffre/TypeOffre)[1]', 'varchar(max)') = T2.Nom)

我不能使用value方法,因为她需要一个实例...

并且查询方法像这样在单个列中返回Typeoffre节点的值

AppartementMaison

任何想法 ?

尝试这个:

SELECT T2.Nom
FROM RechercheOffre T1
CROSS APPLY T1.Xml.nodes('/Criteres/TypesOffre/TypeOffre') AS CTT(TypeOffre)
WHERE 
  T2.Nom = TypeOffre.value('(.)', 'varchar(50)') 

您需要在.nodes() XQuery函数上使用CROSS APPLY来获取XML行的伪列表,然后您可以从XML节点中提取单个值并与数据库的其他位进行比较。

加入

SELECT T2.Nom
FROM RechercheOffre T1
CROSS APPLY T1.Xml.nodes('/Criteres/TypesOffre/TypeOffre') AS CTT(TypeOffre)
INNER JOIN TypeOffre T2 ON (TypeOffre.value('(.)', 'varchar(50)') = T2.Nom)

谢谢你的marc_s

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM