【问题标题】:Querying encoded XML within unencoded XML column in SQL Server 2012在 SQL Server 2012 中查询未编码 XML 列中的编码 XML
【发布时间】:2015-11-18 18:40:23
【问题描述】:

我有一个带有 XML 列的表,如下所示。 XML 列在未编码的 XML 中包含一些编码的 XML。

OrderID    UserDefXML
      1    <Order><OrderDetail><LineItem><ItemName>XYZ</ItemName><Custominfo> &lt;PrimaryName&gt;STACKOVERFLOW &lt;/PrimaryName&gt;</Custominfo></LineItem></OrderDetail></Order>      

我需要提取所有具有PrimaryName LIKE 'STACK%' 的行。这个查询应该是什么样的?

【问题讨论】:

    标签: xml tsql sql-server-2012 sqlxml


    【解决方案1】:

    您可以先将编码的XML字符串-Custominfo元素的内容-转换为XML数据类型,例如:

    SELECT t.*, x.lineItem.value('Custominfo[1]','varchar(max)') 'CustomInfo'
    FROM YourTableName t
    CROSS APPLY t.UserDefXML.nodes('/Order/OrderDetail/LineItem') as x(lineItem)
    WHERE 
      CONVERT(XML, x.lineItem.value('Custominfo[1]','varchar(max)')).value('PrimaryName[1]','varchar(max)') 
      LIKE 'STACK%'
    

    Sqlfiddle Demo

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-18
      • 2012-10-18
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      相关资源
      最近更新 更多