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

查询SQL Server 2008 R2 XML数据类型的最简单方法?,sql,sql-server,xml,sql-server-2008-r2,Sql,Sql Server,Xml,Sql Server 2008 R2,我需要在XML数据类型列中获取节点值 <CustomContentData> <prpIsRSSFeed>false</prpIsRSSFeed> </CustomContentData> 假的 在SQL Server中如何实现这一点 列名是ClassXML使用,一个简单的数据示例如下: DECLARE @T TABLE (ClassXML XML); INSERT @T (ClassXML) VALUES ('<CustomC

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

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

假的
在SQL Server中如何实现这一点

列名是
ClassXML

使用,一个简单的数据示例如下:

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;
DECLARE@T表(ClassXML);
插入@T(ClassXML)
价值('
假的
');
选择t.ClassXML.value('CustomContentData[1]/prpirssfeed[1]','VARCHAR(5)')
从@T作为T;
使用,一个简单的数据示例如下:

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;
DECLARE@T表(ClassXML);
插入@T(ClassXML)
价值('
假的
');
选择t.ClassXML.value('CustomContentData[1]/prpirssfeed[1]','VARCHAR(5)')
从@T作为T;

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

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