在Oracle数据库中是否存在布尔类型,类似于Ms SQL Server中的BIT数据类型?
当前回答
不,在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' ));
其他回答
而不是SQL级别,这很遗憾 但是在PLSQL中有一个
如果你使用Java和Hibernate,那么使用NUMBER(1,0)是最好的方法。正如您在这里看到的,Hibernate会自动将这个值转换为布尔值。
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;
在pl/sql中有一个布尔类型,但没有一个可以用作列的数据类型。
只是因为还没有人提到它:使用RAW(1)似乎也是常见的实践。