在Oracle数据库中是否存在布尔类型,类似于Ms SQL Server中的BIT数据类型?
不仅在Oracle的SQL(不是PL/SQL)中缺少布尔数据类型,而且他们也没有关于使用什么来代替的明确建议。请看asktom的这个帖子。从推荐CHAR(1)当有人指出“Y”/“N”取决于英语时,他们会切换到NUMBER(1) 0/1,而例如,德国程序员可能会使用“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;
根据Ammoq和kupa的回答,我们使用默认为0的数字(1),不允许为空。
下面是一个add列来演示:
ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);
希望这能帮助到一些人。
不,在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' ));
推荐文章
- 模式、表和数据库之间的区别是什么?
- 将一列的多个结果行连接为一列,按另一列分组
- 检查MySQL表是否存在而不使用“select from”语法?
- Java中的&和&&有什么区别?
- 我看到VARCHAR(255)如此频繁地使用(而不是其他长度),有什么好的原因吗?
- 使用pgadmin连接到heroku数据库
- 在PostgreSQL中快速发现表的行数
- 更改varchar列的大小为较低的长度
- 从表中选择1是什么意思?
- Delete_all vs destroy_all
- 我如何移动一个redis数据库从一个服务器到另一个?
- 如何首次配置postgresql ?
- SQL Server中User和Login的区别
- 数据库性能调优有哪些资源?
- 如何更改表的默认排序规则?