我需要在XML数据类型列中获取节点值。
<CustomContentData>
<prpIsRSSFeed>false</prpIsRSSFeed>
</CustomContentData>
如何在SQL Server中完成?
列名为ClassXML
答案 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