Oracle中的布尔字段?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (48)

昨天我想将一个布尔型字段添加到Oracle表中。但是,Oracle中实际上并不存在布尔型数据类型。有人在这里知道模拟布尔值的最佳方法吗?

  • 使用一个整数,只是不打扰分配除0或1以外的任何东西。
  • 使用'Y'或'N'字符作为唯一的两个值。
  • 使用带CHECK约束的枚举。

有经验的Oracle开发人员知道哪种方法是首选/规范的?

提问于
用户回答回答于

最常见的设计是模仿Oracle数据字典视图使用的许多类似布尔的标志,选择“Y”为true,“N”为false。但是,要正确地与主机环境(如JDBC,OCCI和其他编程环境)进行交互,最好选择0代表假,1代表真,以便它可以正确使用getBoolean和setBoolean函数。

为了效率的缘故,使用

  • 值为 0/1(因为与JDBC的互操作性getBoolean()等)和检查约束
  • 一个类型 CHAR的(因为它使用更少的空间比NUMBER)。

例子:

create table tbool (bool char check (bool in (0,1)); insert into tbool values(0); insert into tbool values(1);`

用户回答回答于

Oracle本身使用Y / N作为布尔值。为了完整起见,应该注意的是,pl / sql有一个布尔类型,只有表没有。

如果你正在使用该字段来指示是否需要处理记录,则可以考虑使用Y和NULL作为值。这使得占用非常小的空间的非常小的(快速读取)索引。

扫码关注云+社区