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数据库中是否有任何布尔类型?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 缺少表列的 Bit 数据类型

如何在 Toad for Oracle 中使用自定义代码片段?

Oracle中实现布尔类型

Oracle-实现Boolean类型字段

Oracle 中的 JPA 和 Flyway 布尔类型

如何在SAS中使用布尔数据类型?