3

我想知道如何获取所有具有 TIPO 属性且等于“MC”的元素

XML 是:

<ROOT>
  <PARAMETERS>
    <USU_LOGIN>yleon</USU_LOGIN>
    <USU_NOMBREPRIMERO>Yerusha</USU_NOMBREPRIMERO>
    <USU_APELLIDOPRIMERO>Leon</USU_APELLIDOPRIMERO>
    <USU_EMAIL>yleon@pt.com.ve</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
4

2 回答 2

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>yleon@pt.com.ve</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
于 2013-05-27T21:06:41.437 回答
0

哪种语言?

我认为所有节点都具有相同的名称是理想的。

前任。USU_CONDTITIONS

如果使用 XPath,代码类似于

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

现在,如果您不能更改节点,则需要单独逐个节点计算。

于 2013-05-27T20:54:21.717 回答