oracle中的boolean数据类型仅限于PL/SQL,oracle本身没有默认的提供布尔型的存储方式
在龙山等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站建设 网站设计制作按需开发网站,公司网站建设,企业网站建设,高端网站设计,全网整合营销推广,外贸网站制作,龙山网站建设费用合理。
在设计数据库表结构时,选择一种高效的策略来存储一个可以在很多编程环境中使用的逻辑布尔值是非常重要的。(虽然 Oracle 没有 Boolean 数据类型来表示数据库字段,但是在 PL/SQL 中却具有 Boolean 数据类型。)
任何布尔定义的字段还应该被正确进行约束检查,以确保在插入/更新时输入了有效的值。
create table tbool (bool char check (bool in ('N','Y'));
insert into tbool values ('N');
insert into tbool values ('Y');
最常见的设计是模拟很多 Oracle 的数据字典视图中使用的类似布尔的标志,选择‘Y’表示真,‘N’表示假。然而,要正确地与宿主环境交互,比如与 JDBC、OCCI 和其它编程环境交互,最好选择0表示假,选择1表示真,从而使getBoolean 和setBoolean 能够正确地处理它们。
We could define a Boolean as NUMBER(1); however, in Oracle's internal number format, 0 takes 1 byte and 1 takes 2 bytes after the length byte (so it's more efficient to store it as CHAR). Even though the character is defined as CHAR, SQL can convert and verify against actual numbers.
我们可以将一个布乐类型定义为 NUMBER(1);然而,在 Oracle 的内部数字格式中,0在长度字节之后占用一个字节,而1在长度字节之后占用两个字节(所以更加高效地方式是将其存储为 CHAR)。即使字符被定义为 CHAR,SQL 也可以转换和验证实际的数字。
create table tbool (bool char check (bool in (0,1));
insert into tbool values(0);
insert into tbool values(1);
一直被Oracle中没有boolean类型困扰 网上有两种解决方案 一是用Number( ) 二是用Char( ) 各有所长 个人比较喜欢用Number方式解决 原因很简单 因为是从C语言开始的 这符合C语言的习惯
前几天有幸咨询到Oracle方面的顾问 他们提供的解决方案是用Char( )实现boolean 但也有需要注意的地方 原话如下
lishixinzhi/Article/program/Oracle/201311/18383
以下提供几种替代方法:
如果用编码,实际项目使用的时候会用CHAR(1)或者INTEGER、NUMBER(1)之类的进行替代,然后在代码中进行判断,稍微熟练一下就知道跟true/false没什么区别。
如果不用编码,就会用VARCHAR2(N)之类的用原文。
另外,实际项目中对建表约束比较少操作,这种约束会消耗一点资源,包括编码、报错处理和系统内部校验等。同样的大学里学到的数据库范式在正式项目中并不会全面的实施。
【布尔类型】
布尔类型( bool),布尔类型只有两个值,false 和 true。通常用来判断条件是否成立。
如果变量值为 0 就是 false,否则为 true,布尔变量只有这两个值。
如:
例1:bool pb= -1.5; // pb=true;
例2:bool pt=0; // pt=false;
【不同的关系运算符中的布尔类型值的结果】
数据库的字段为布尔值:一般是设计
字段名:boolean_column
类型:number(1)
值:0:代表false、1:代表true