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

时间:2014-10-24 12:41:02

标签: sql sql-server xml sql-server-2008-r2

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

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

如何在SQL Server中完成?

列名为ClassXML

2 个答案:

答案 0 :(得分:3)

使用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;

答案 1 :(得分:2)

如果列在SQL Server中已经是XML数据类型,那么下面的代码应该通过使用XPATH的值函数来工作。如果它存储为varchar,则只需将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