2011-02-23 100 views
0

看看這個XML如何檢索SQL Server中的XML節點的多個值2008

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

我想找回TypeOffre節點的值,並在使用他們加入像下面的語句

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

,因爲她需要一個實例我不能使用值法...

和查詢方法返回一個單列Typeoffre節點的值,這樣

AppartementMaison 

任何想法?

回答

2

試試這個:

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

您需要使用CROSS APPLY.nodes() XQuery函數來獲取XML的行的僞列表,然後你可以從XML節點拔出個人價值,並比較數據庫的其他位。

0

隨着JOIN

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