在SQL中读取XML的布尔值。
在这个问题中,原帖中的代码使用了SQL Server中的字段类型BIT来表示布尔值,因为SQL Server中没有直接的布尔类型。然而,这段代码在解析XML时可能会遇到问题,因为其他大多数语言将BIT列解析为布尔值。为了解决这个问题,可以使用value方法和'bit'类型来解析XML中的布尔值字段。
解决方法如下:
SELECT Nodes.node.value('(field[="BAR_prior_report"]/value)[1]', 'bit') AS BAR_prior_report, Nodes.node.value('(field[="BAR_multiple_branches"]/value)[1]', 'bit') AS BAR_multiple_branches FROM .nodes('//form') AS Nodes(node);
如果想要进一步处理这些字段,可以通过另一个projection进行传递,如下所示:
SELECT CAST(BAR_prior_report AS VARCHAR(5)) AS BAR_prior_report, CAST(BAR_multiple_branches AS VARCHAR(5)) AS BAR_multiple_branches FROM ( SELECT Nodes.node.value('(field[="BAR_prior_report"]/value)[1]', 'bit') AS BAR_prior_report, Nodes.node.value('(field[="BAR_multiple_branches"]/value)[1]', 'bit') AS BAR_multiple_branches FROM .nodes('//form') AS Nodes(node) ) AS T;
在Oracle中也没有直接的布尔类型,所以原帖中的代码可能需要将值解码为varchar2类型,例如'TRUE'或'FALSE',或者根据个人喜好使用'1'或'0'。可以参考以下链接了解更多信息:stackoverflow.com/questions/30062和asktom.oracle.com/pls/apex/…