在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;