Oracle中的布尔字段

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

  • 使用一个整数,只是不打扰分配除0或1以外的任何东西。

  • 使用'Y'或'N'字符作为唯一的两个值。

  • 使用带CHECK约束的枚举。

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


    我发现这个链接很有用。

    以下是突出显示每种方法的一些优点/缺点的段落。

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

    基本上他们主张方法2,为了效率的缘故,使用

  • 值为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作为值。 这使得占用非常小的空间的非常小的(快速读取)索引。


    要使用最少量的空间,您应该使用限制为'Y'或'N'的CHAR字段。 Oracle不支持BOOLEAN,BIT或TINYINT数据类型,所以CHAR的一个字节尽可能小。

    链接地址: http://www.djcxy.com/p/25137.html

    上一篇: Boolean Field in Oracle

    下一篇: Alternative to lots of booleans in MySQL?