sql - 在 Db2 中处理 BOOLEAN 值的最佳方式是什么?

标签 sql db2

数据库

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

错误:数据类型为“SYSIBM.SMALLINT”的值无法转换为类型“SYSIBM.BOOLEAN”

问题

如何在 Db2 中使用 BOOLEAN?

最佳答案

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 和 SQL DML 的 CLP 支持 bool 值,但请考虑使用 Db2 列数据类型 bool 值对应用程序的影响。检查 PHP、Python、Java、.net 等如何根据用于访问数据库的任何语言来操作此数据类型。

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

关于sql - 在 Db2 中处理 BOOLEAN 值的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49389561/

相关文章:

db2 - IBM DB2 ODBC 驱动程序 64 位无法加载

sql - 有没有办法在 SQL> 中应用移动限制

C# - Entity Framework 代码优先 - 将对象映射到两个表中

java - hibernate 错误 : executeQuery method cannot be used for update

java - 检查表是否存在,使用java中的连接对象

sql - 寻找标量函数以查找字符串中字符的最后一次出现

mysql - 多个表的内部连接,计数和不同

sql - 使用窗口函数动态选择任意 n 列

MySQL按最新更新时间选择重复数据

sql - 在时间戳列上为使用年份函数的查询创建索引