xml - 如何使用 XQUERY 在 T-SQL 中获取给定 XML 属性的许多元素?

标签 xml sql-server-2008 tsql xquery

我想知道如何获取其中所有具有属性 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

最佳答案

检查这个:

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

关于xml - 如何使用 XQUERY 在 T-SQL 中获取给定 XML 属性的许多元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16780108/

相关文章:

java - 如何使用 setter 和 getter 方法获取对象的对象数组及其响应

xml - 将 xls/xlsx 转换为 xml 的命令行工具?

c# - Linq DataContext SubmitChanges InvalidOperationException from ZombieCheck

sql - 合并到广告订单中

sql - 建立一个逗号分隔的列表?

sql - 在T-SQL的日期时间字段上使用类似LEAST的方法

xml - xslt 和命名空间的问题

python - 非贪婪 XML 中的多个匹配(Python 正则表达式)

sql-server-2008 - 帮助解决SqlException:在非负载情况下,连接超时超时

sql-server - 如何列出 SQL Server 用户定义表类型的主键?