在oracle数据库中是否有布尔types?

在oracle数据库中是否有布尔types,类似于MS SQL中的BIT数据types?

不仅在Oracle的SQL(不是PL / SQL)中缺less布尔型数据types,而且他们也没有关于使用什么的明确build议。 在asktom上看到这个线程 。 从推荐CHAR(1) 'Y'/'N'时,当有人指出'Y'/'N'取决于英语时,他们切换到NUMBER(1) 0/1 ,而德语程序员可能会使用'J'/'N'

最糟糕的是,他们捍卫这个愚蠢的决定,就像他们捍卫''=NULL愚蠢”一样。

不。

可以使用:

 IS_COOL NUMBER(1,0) 1 - true 0 - false 

—享受Oracle

或者使用char Y / N 来描述这里

根据Ammoq和kupa的回答,我们使用数字(1),默认为0,不允许空值。

这里有一个添加列来演示:

 ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL); 

希望这有助于某人。

不在SQL级别,这是一个可惜有一个在PLSQL虽然

没有那里不存在types布尔值,而是你可以1/0(types编号),或'Y'/'N'(types字符)或'真'/'假'(typesvarchar2)。

在pl / sql中有一个布尔types ,但没有一个可以用作列的数据types。

一个常见的节省空间的技巧是将布尔值存储为Oracle CHAR ,而不是NUMBER:

只是因为没有人提到它:使用RAW(1)也似乎是常见的做法。

不,在Oracle数据库中没有布尔types,但可以这样做:

你可以在列上加一个检查约束。

如果你的表没有检查列,你可以添加它:

 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' )); 
 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;