繁体   English   中英

查询SQL Server 2008 R2 XML数据类型的最简单方法?

[英]Easiest way to query a SQL Server 2008 R2 XML data type?

我需要在XML数据类型列中获取节点值。

<CustomContentData>
  <prpIsRSSFeed>false</prpIsRSSFeed>
</CustomContentData>

在SQL Server中如何完成?

列名称为ClassXML

使用XQuery ,关于数据的简单示例是:

DECLARE @T TABLE (ClassXML XML);
INSERT @T (ClassXML) 
VALUES  ('<CustomContentData>
            <prpIsRSSFeed>false</prpIsRSSFeed>
        </CustomContentData>');

SELECT  t.ClassXML.value('CustomContentData[1]/prpIsRSSFeed[1]', 'VARCHAR(5)')
FROM    @T AS t;

如果该列已经是SQL Server中的XML数据类型,则下面的代码应通过将值函数与XPATH一起使用来工作。 如果将其存储为varchar,则只需用CONVERT(XML, ClassXML).value替换ClassXML.value CONVERT(XML, ClassXML).value 希望这可以帮助!

DECLARE @Data TABLE (ClassXML XML)
INSERT @Data VALUES ('<CustomContentData><prpIsRSSFeed>false</prpIsRSSFeed></CustomContentData>')

SELECT
    CONVERT(BIT, CASE WHEN ClassXML.value ('(/CustomContentData/prpIsRSSFeed)[1]',
        'VARCHAR(50)') = 'true' THEN 1 ELSE 0 END) AS IsRssFeed
FROM @Data

产量输出

IsRssFeed
---------
0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM