Oracle的数据类型中有没有布尔型

Oracle的数据类型中有没有布尔型,第1张

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)

ACCESS数据库表里字段如果属于"是/否"数据类型,其存储的数据值是布尔值,它只能输入两种值,即“true”和“false”。如果字段的“必填字段”属性设置为“否”你还可以将Null(空值)写入其中。请注意Null不等于零长度字符串"",零长度字符串是无法写入"是/否"数据类型字段的。

在ACCESS数据库里,true=-1,false=0

将“真”写入"是/否"数据类型,下列写法是可以接受的

逻辑值“真”可被接受的写法:

True,-1,或其它不等于0的数字

例如将学号为'001'的学生的是/否类型字段“团员”更改为“是”,下面写法是可以的

1) update 学生表 set 团员=True where 学号='001'

2) update 学生表 set 团员=-1 where 学号='001'

下面3例也行,因为系统会自动将所有非0的数字转换成逻辑值“True”

3) update 学生表 set 团员=1 where 学号='001'

4) update 学生表 set 团员=390 where 学号='001'

5) update 学生表 set 团员=-20 where 学号='001'

将“假”写入"是/否"数据类型,下列写法是可以接受的:

逻辑值“假”可被接受的写法:

False,0

例如将学号为'001'的学生的是/否类型字段“团员”改为“否”,下面写法是可以的

6) update 学生表 set 团员=False where 学号='001'

7) update 学生表 set 团员=0 where 学号='001'

以True/False 和0/-1这两种写法比较常见,但是以True/False写法最为规范。

至于将上面举例以外的写法写入是/否类型字段将被系统拒绝


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10004425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存