【问题标题】:What is the best way to handle BOOLEAN values in Db2?在 Db2 中处理 BOOLEAN 值的最佳方法是什么?
【发布时间】:2018-03-20 16:31:32
【问题描述】:

数据库

Db2

场景

我有一列需要为真或假。我找到了两个指向如何实现这一目标的来源;但是,当我把它们放在一起时,我得到了一个错误。

  1. Boolean values
  2. Casting between data types

当前解决方案

CREATE TABLE USERS
(
   ID INT NOT NULL,
   .
   .
   .
   IS_LOCKED SMALLINT NOT NULL WITH DEFAULT 0,
   PRIMARY KEY(ID)
);

SELECT U.ID, CAST(U.IS_LOCKED AS BOOLEAN) as IS_LOCKED FROM USERS U

错误:A value with data type "SYSIBM.SMALLINT" cannot be CAST to type "SYSIBM.BOOLEAN"

问题

如何在 Db2 中使用 BOOLEAN?

【问题讨论】:

    标签: sql db2


    【解决方案1】:

    Linux/Unix/Windows 上的 Db2 V11.1 支持 BOOLEAN 作为列数据类型,并且可以在结果集中返回此类列。这是一个使用命令行处理器的示例(在 bash shell 中):

    create table mytable( id integer, mybool boolean with default true )
    DB20000I  The SQL command completed successfully.
    
    insert into mytable(id, mybool) values (1, false), (2, true), (3, false)
    DB20000I  The SQL command completed successfully.
    
    select id,mybool from mytable order by 1
    
    ID          MYBOOL
    ----------- ------
              1      0
              2      1
              3      0
    
      3 record(s) selected.
    

    但是,虽然普通 DDL 和 CLP for SQL DML 支持布尔值,但请考虑使用 Db2 列数据类型布尔值对应用程序的影响。检查 PHP、Python、Java、.net 等如何根据用于访问数据库的任何语言来操作此数据类型。

    提示:在寻求有关 Db2 的帮助时,明智的做法是始终提及您的 Db2 版本和运行 Db2 服务器的操作系统(即 z/os、iSeries、linux/ unix/windows)并相应地标记您的问题。

    【讨论】:

      【解决方案2】:

      您提供了指向 DB2 11.1 手册的链接,以及指向 DB2 9.7 手册的第二个链接。这是你的答案。在 DB2 11.1.1.1 中支持 BOOLEAN 作为列数据类型,但在 DB2 9.7 中不支持。

      在此处https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.wn.doc/doc/c0061179.html#c0061179__FP1 中查看针对 Db2 11.1 的 Mod Pack 1 Fix Pack 1 列出的增强功能

      BOOLEAN 数据类型现在可用于表列和表达式结果。这增强了与其他关系数据库管理系统的兼容性

      【讨论】:

        【解决方案3】:

        在其他数据库中,您可以是显式的:

        select (case when u.isLocked = 0 then FALSE else TRUE end)
        

        但是 DB2 explicitly 在编程代码中只支持布尔值:

        • 无法在结果集中返回布尔数据类型。

        【讨论】:

          猜你喜欢
          • 2017-11-15
          • 2010-09-06
          • 2011-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多