Oracle中的布尔字段
昨天我想将一个布尔型字段添加到Oracle表中。 但是,Oracle中实际上并不存在布尔型数据类型。 有人在这里知道模拟布尔值的最佳方法吗? 谷歌搜索主题发现了几种方法
使用一个整数,只是不打扰分配除0或1以外的任何东西。
使用'Y'或'N'字符作为唯一的两个值。
使用带CHECK约束的枚举。
有经验的Oracle开发人员知道哪种方法是首选/规范的?
我发现这个链接很有用。
以下是突出显示每种方法的一些优点/缺点的段落。
最常见的设计是模仿Oracle数据字典视图使用的许多类似布尔的标志,选择“Y”为true,“N”为false。 但是,要正确地与主机环境(如JDBC,OCCI和其他编程环境)进行交互,最好选择0代表假,1代表真,以便它可以正确使用getBoolean和setBoolean函数。
基本上他们主张方法2,为了效率的缘故,使用
getBoolean()
等的互操作性)和检查约束 他们的例子:
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