2013-05-27 28 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')]) 

现在,如果你不能改变的节点,则需要单独计算的节点的节点。

相关问题