【问题标题】:Filter cte xpath query过滤 cte xpath 查询
【发布时间】:2015-09-25 13:16:10
【问题描述】:

鉴于以下 XPath CTE,我想在 Field2 上进行过滤。那怎么能做到呢?我只是在学习 XPath。使用 SQL Server 2008 R2。

WITH ConvertedToXML AS 
( 
     SELECT TOP 10 
         xml_msg AS AsVarchar,
         CAST(xml_msg AS XML) AS AsXml 
     FROM 
         Table
     ORDER BY
         date_received desc
) 
SELECT 
    ConvertedToXML.AsXml.value('(//Field1)[1]', 'varchar(max)') AS Field1,
    ConvertedToXML.AsXml.value('(//Field2)[1]', 'Varchar(10)') as Field2,
    ConvertedToXML.AsVarchar,
    ConvertedToXML.AsXml 
Into #TempXML
FROM ConvertedToXML;

【问题讨论】:

    标签: xpath sql-server-2008-r2 common-table-expression


    【解决方案1】:

    如果我正确理解了这个问题,您想过滤具有Field2 值等于某个值的行,例如foo,您可以这样做:

    SELECT 
        ......
        ......
    Into #TempXML
    FROM ConvertedToXML
    WHERE ConvertedToXML.AsXml.value('(//Field2)[1]', 'Varchar(10)') = 'foo';
    

    或者使用 XPath 谓词获取值等于 "foo"Field2 元素,并使用 exists() 方法执行 XPath:

    SELECT 
        ......
        ......
    Into #TempXML
    FROM ConvertedToXML
    WHERE ConvertedToXML.AsXml.exists('(//Field2[.="foo"])[1]', 'Varchar(10)') = 1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-11
      • 2010-12-16
      • 1970-01-01
      • 2014-08-13
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多