首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle中的布尔型字段

Oracle中的布尔型字段
EN

Stack Overflow用户
提问于 2008-08-27 13:16:59
回答 8查看 207.7K关注 0票数 149

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

  1. 使用整数,只需将0或1以外的值赋给它即可。
  2. 使用仅有的两个值为'Y‘或'N’的字符字段。
  3. 使用带有CHECK约束的枚举。

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-08-27 13:23:06

我发现this链接很有用。

下面的段落重点介绍了每种方法的一些优缺点。

最常见的设计是模仿Oracle的数据字典视图使用的许多类似布尔的标志,选择'Y‘表示true,选择'N’表示false。但是,为了正确地与主机环境交互,比如JDBC、OCCI和其他编程环境,最好选择0表示false,选择1表示true,这样它就可以正确地使用getBoolean和setBoolean函数。

基本上,为了提高效率,他们提倡方法2,使用

  • 值为0/1 (由于与JDBC的getBoolean()等的互操作性)。使用check约束,
  • 是一种CHAR类型(因为它使用的空间比NUMBER少)。

他们的例子:

创建表tbool (bool char check (bool in (0,1));insert into tbool values(0);insert into tbool values(1);`

票数 84
EN

Stack Overflow用户

发布于 2008-10-21 19:23:39

Oracle本身对布尔值使用Y/N。为了完整性,应该注意到pl/sql有一个boolean类型,只有表没有。

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

票数 28
EN

Stack Overflow用户

发布于 2008-08-27 13:29:07

要使用最少的空间,您应该使用约束为'Y‘或'N’的CHAR字段。Oracle不支持BOOLEAN、BIT或TINYINT数据类型,因此CHAR的一个字节是最小的。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档