在 SQL 中读取 XML BOOLEAN 值

Posted

技术标签:

【中文标题】在 SQL 中读取 XML BOOLEAN 值【英文标题】:READ XML BOOLEAN Values in SQL 【发布时间】:2014-05-15 19:41:14 【问题描述】:

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

 DECLARE @XML XML = '<form>
                     <field name="BAR_prior_report" type="Boolean"><value>false</value></field>
                      <field name="BAR_multiple_branches" type="Boolean"><value>true</value></field>
                  </form>'

我希望看到 BAR_prior_report 为 False,BAR_multiple_branches 为 True

【问题讨论】:

您是否正在编写 SQL(结构化查询语言)并且真的是指 Microsoft SQL Server(实际产品)?如果是:请添加sql-server 标签以明确这一点。如果不是:什么这是用于数据库系统的? 【参考方案1】:

这会将字段作为BIT 列返回,大多数语言会将其解析为布尔值(SqlServer 中没有布尔值)。

SELECT
  Nodes.node.value('(field[@name="BAR_prior_report"]/value)[1]', 'bit') 
    AS BAR_prior_report,
  Nodes.node.value('(field[@name="BAR_multiple_branches"]/value)[1]', 'bit') 
    AS BAR_multiple_branches
FROM
  @XML.nodes('//form') AS Nodes(node);

Fiddle here

您始终可以将其传递给另一个投影以进行进一步处理,例如here

【讨论】:

Oracle 中也没有布尔值,因此 OP 可能必须将值解码为 varchar2(例如“TRUE”或“FALSE”)或者可能是“1”或“0”,具体取决于他的/她的喜好。参考:***.com/questions/30062/boolean-field-in-oracle和asktom.oracle.com/pls/apex/…

以上是关于在 SQL 中读取 XML BOOLEAN 值的主要内容,如果未能解决你的问题,请参考以下文章

通过 PL SQL 读取 XML(存储在 Long 变量中)

读取 XML 数据并构建查询以将值插入 SQL Server DB 的最佳方法是啥?

java中boolean类型占几个字节

boolean[] vs. BitSet:哪个更有效?

如何在 SQL UPDATE 语句 WHERE 子句中读取脏值

在SQL Server 2012中读取XML数据