2013-05-27 55 views
3

我想知道如何讓所有的元素都具有屬性TIPO和全髖關節置換等於「MC」如何使用XQUERY在T-SQL中獲取許多元素的XML屬性?

的XML是:

<ROOT> 
    <PARAMETERS> 
    <USU_LOGIN>yleon</USU_LOGIN> 
    <USU_NOMBREPRIMERO>Yerusha</USU_NOMBREPRIMERO> 
    <USU_APELLIDOPRIMERO>Leon</USU_APELLIDOPRIMERO> 
    <USU_EMAIL>[email protected]</USU_EMAIL> 
    <USU_FECHACREACION>201305270</USU_FECHACREACION> 
    <USU_CONDITIONS1 TIPO="MC">AND USU_ID=4</USU_CONDITIONS1> 
    <USU_CONDITIONS2 TIPO="MC">AND USU_ID=5</USU_CONDITIONS2> 
    <USU_CONDITIONS3 TIPO="ZZ">AND USU_ID=9</USU_CONDITIONS3> 
    </PARAMETERS> 
</ROOT> 

和預期結果是:

AND USU_ID=4 
AND USU_ID=5 

回答

1

檢查:

DECLARE @xml XML 
SET @xml = '<ROOT> 
    <PARAMETERS> 
    <USU_LOGIN>yleon</USU_LOGIN> 
    <USU_NOMBREPRIMERO>Yerusha</USU_NOMBREPRIMERO> 
    <USU_APELLIDOPRIMERO>Leon</USU_APELLIDOPRIMERO> 
    <USU_EMAIL>[email protected]</USU_EMAIL> 
    <USU_FECHACREACION>201305270</USU_FECHACREACION> 
    <USU_CONDITIONS1 TIPO="MC">AND USU_ID=4</USU_CONDITIONS1> 
    <USU_CONDITIONS2 TIPO="MC">AND USU_ID=5</USU_CONDITIONS2> 
    <USU_CONDITIONS3 TIPO="ZZ">AND USU_ID=9</USU_CONDITIONS3> 
    </PARAMETERS> 
</ROOT>' 


-- RESULTS 
SELECT txt = T.Item.value('data(.)', 'varchar(255)') 
FROM @xml.nodes('//PARAMETERS/*') AS T(Item) 
WHERE T.Item.value('data(@TIPO)', 'varchar(255)')='MC' 


-- output 
AND USU_ID=4 
AND USU_ID=5 
+0

它完美的功能!非常感謝你,我很高興! – Artemination

0

哪種語言?

我認爲這將是所有節點具有相同名稱的理想選擇。

Ex。 USU_CONDTITIONS

如果您使用XPath,代碼類似於

count(//USU_CONDITIONS[contains(@TIPO,'MC')]) 

現在,如果你不能改變的節點,則需要單獨計算的節點的節點。

相關問題