在Oracle中的布尔字段
在Oracle中的布尔字段
昨天我想在一个 Oracle 表中添加一个布尔字段。然而,在 Oracle 中实际上并没有布尔数据类型。这里有谁知道模拟布尔的最佳方法吗?在谷歌上搜索了几种方法:
1. 使用整数并且只使用 0 或 1。
2. 使用一个 char 字段,并且只使用 \'Y\' 或 \'N\' 作为两个值。
3. 使用带有检查约束的枚举。
有经验的 Oracle 开发人员知道哪种方法是首选/规范吗?
admin 更改状态以发布 2023年5月24日
我发现这个链接很有用。
以下是一个段落,突出了每种方法的优缺点。
最常见的设计是模仿Oracle的数据字典视图使用的许多类似布尔值的标志,选择“Y”表示真,选择“N”表示假。然而,为了与主机环境(如JDBC、OCCI和其他编程环境)正确交互,最好选择0表示假,1表示true,这样可以正确地使用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);`