我发现这个链接有用。
这里是强调每种方法的一些优点/缺点的段落。
最常见的devise是模仿Oracle数据字典视图使用的许多类似布尔的标志,select“Y”为true,“N”为false。 但是,要正确地与主机环境(如JDBC,OCCI和其他编程环境)进行交互,最好select0代表false,1代表true,这样可以正确使用getBoolean和setBoolean函数。
基本上他们主张方法2,为了效率的缘故,使用
值为 0/1(因为与JDBC的getBoolean()等)具有检查约束
一种CHAR(因为它使用的空间less于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有一个布尔types,只有表没有。
如果您正在使用该字段来指示是否需要处理logging,则可以考虑使用Y和NULL作为值。 这使得占用很小空间的非常小的(快速读取)索引。
要使用最less量的空间,您应该使用一个约束为“Y”或“N”的CHAR字段。 Oracle不支持BOOLEAN,BIT或TINYINT数据types,所以CHAR的一个字节尽可能小。
最好的select是0和1(作为数字 – 另一个答案build议0和1作为空间效率的CHAR ,但这有点扭曲对我来说),使用NOT NULL和检查约束限制内容到这些值。 (如果你需要列可以为空,那么它不是一