在Oracle数据库中是否存在布尔类型,类似于Ms SQL Server中的BIT数据类型?
当前回答
不,不存在类型布尔,但你可以你1/0(类型数字),或'Y'/'N'(类型char),或'true'/'false'(类型varchar2)。
其他回答
一个常见的节省空间的技巧是将布尔值存储为Oracle CHAR,而不是NUMBER:
不。
可以使用:
IS_COOL NUMBER(1,0)
1 - true
0 - false
——享受甲骨文
或者使用这里描述的字符Y/N
不仅在Oracle的SQL(不是PL/SQL)中缺少布尔数据类型,而且他们也没有关于使用什么来代替的明确建议。请看asktom的这个帖子。从推荐CHAR(1)当有人指出“Y”/“N”取决于英语时,他们会切换到NUMBER(1) 0/1,而例如,德国程序员可能会使用“J”/“N”。
最糟糕的是,他们为这个愚蠢的决定辩护,就像他们为“=NULL愚蠢”辩护一样。
只是因为还没有人提到它:使用RAW(1)似乎也是常见的实践。
不,在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中的一个查询中更新多个具有不同值的行
- 在SQL中更新多个列
- 如何删除表中特定列的第一个字符?
- MySQL OR与IN性能
- 为什么我应该使用基于文档的数据库而不是关系数据库?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 将值从同一表中的一列复制到另一列
- 什么是数据库池?
- GROUP BY with MAX(DATE)
- 删除id与其他表不匹配的sql行
- 等价的限制和偏移SQL Server?
- 关于数据库,每个开发人员应该知道些什么?
- 为什么我不能在DELETE语句中使用别名?
- 在SQL Server Management Studio中保存带有标题的结果
- "where 1=1"语句