Oracle数据库中是否有任何布尔类型?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库中是否有任何布尔类型?相关的知识,希望对你有一定的参考价值。
Oracle数据库中是否有任何布尔类型,类似于Ms SQL Server中的BIT
数据类型?
不仅Oracle的SQL(不是PL / SQL)中缺少布尔数据类型,而且他们也没有明确建议使用什么代替。请参阅asktom上的this thread。从推荐CHAR(1) 'Y'/'N'
开始,当有人指出NUMBER(1) 0/1
依赖于英语时,他们会切换到'Y'/'N'
。德国程序员可能会使用'J'/'N'
代替。
最糟糕的是,他们捍卫这个愚蠢的决定,就像他们捍卫''=NULL
愚蠢。
DECLARE
error_flag BOOLEAN := false;
BEGIN
error_flag := true;
--error_flag := 13;--expression is of wrong type
IF error_flag THEN
UPDATE table_a SET id= 8 WHERE id = 1;
END IF;
END;
不。
可以使用:
IS_COOL NUMBER(1,0)
1 - true
0 - false
---享受Oracle
或者使用char Y / N as described here
根据Ammoq和kupa的答案,我们使用数字(1),默认值为0,不允许空值。
这是一个用于演示的添加列:
ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);
希望这有助于某人。
不是在SQL级别,这很可惜PLSQL中有一个
不,Oracle数据库中没有布尔类型,但您可以这样做:
您可以对列进行检查约束。
如果您的表没有检查列,则可以添加它:
ALTER TABLE table_name
ADD column_name_check char(1) DEFAULT '1';
添加寄存器时,默认情况下此列为1。
在这里你放一个限制列值的检查,只放1或0
ALTER TABLE table_name ADD
CONSTRAINT name_constraint
column_name_check (ONOFF in ( '1', '0' ));
不存在类型boolean,但是你可以使用1/0(类型号),或'Y'/'N'(类型char),或'true'/'false'(类型varchar2)。
有一个boolean type for use in pl/sql,但没有一个可以用作列的数据类型。
一个常见的节省空间的技巧是将布尔值存储为Oracle CHAR,而不是NUMBER:
仅仅因为没有人提到它:使用RAW(1)似乎也是常见的做法。
以上是关于Oracle数据库中是否有任何布尔类型?的主要内容,如果未能解决你的问题,请参考以下文章