在SQL中读取XML的布尔值。

24 浏览
0 Comments

在SQL中读取XML的布尔值。

如何从SQL中的XML列中读取布尔值。下面是示例代码。使用XQuery Value函数可以实现吗?\n

 DECLARE @XML XML = '
false true
'

\n我希望将BAR_prior_report显示为False,将BAR_multiple_branches显示为True。

0
0 Comments

在这个问题中,原帖中的代码使用了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/30062asktom.oracle.com/pls/apex/…

0