Is there any boolean type in Oracle databases?

SqlDatabaseOracleBooleanSqldatatypes

Sql Problem Overview


Is there any Boolean type in Oracle databases, similar to the BIT datatype in Ms SQL Server?

Sql Solutions


Solution 1 - Sql

Not only is the boolean datatype missing in Oracle's SQL (not PL/SQL), but they also have no clear recommendation about what to use instead. See this thread on asktom. From recommending CHAR(1) 'Y'/'N' they switch to NUMBER(1) 0/1 when someone points out that 'Y'/'N' depends on the English language, while e.g. German programmers might use 'J'/'N' instead.

The worst thing is that they defend this stupid decision just like they defend the ''=NULL stupidity.

Solution 2 - Sql

Nope.

Can use:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- enjoy Oracle

Or use char Y/N as described here

Solution 3 - Sql

As per Ammoq and kupa's answers, We use number(1) with default of 0 and don't allow nulls.

here's an add column to demonstrate:

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

Hope this helps someone.

Solution 4 - Sql

No, there isn't a boolean type in Oracle Database, but you can do this way:

You can put a check constraint on a column.

If your table hasn't a check column, you can add it:

ALTER TABLE table_name
ADD column_name_check char(1) DEFAULT '1';

When you add a register, by default this column get 1.

Here you put a check that limit the column value, just only put 1 or 0

ALTER TABLE table_name ADD
CONSTRAINT name_constraint
column_name_check (ONOFF in ( '1', '0' ));

Solution 5 - Sql

Not at the SQL level and that's a pity There is one in PLSQL though

Solution 6 - Sql

No there doesn't exist type boolean,but instead of this you can you 1/0(type number),or 'Y'/'N'(type char),or 'true'/'false' (type varchar2).

Solution 7 - Sql

There is a boolean type for use in pl/sql, but none that can be used as the data type of a column.

Solution 8 - Sql

If you are using Java with Hibernate then using NUMBER(1,0) is the best approach. As you can see in here, this value is automatically translated to Boolean by Hibernate.

Solution 9 - Sql

A common space-saving trick is storing boolean values as an Oracle CHAR, rather than NUMBER:

Solution 10 - Sql

Just because nobody mentioned it yet: using RAW(1) also seems common practice.

Solution 11 - Sql

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;

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPederView Question on Stackoverflow
Solution 1 - SqlErich KitzmuellerView Answer on Stackoverflow
Solution 2 - SqlBohdanView Answer on Stackoverflow
Solution 3 - SqlAlex StephensView Answer on Stackoverflow
Solution 4 - SqlRoberto GóesView Answer on Stackoverflow
Solution 5 - Sqlvc 74View Answer on Stackoverflow
Solution 6 - SqlkupaView Answer on Stackoverflow
Solution 7 - SqlKlaus Byskov PedersenView Answer on Stackoverflow
Solution 8 - SqldamndemonView Answer on Stackoverflow
Solution 9 - SqlPranay RanaView Answer on Stackoverflow
Solution 10 - SqlFilburtView Answer on Stackoverflow
Solution 11 - SqlzloctbView Answer on Stackoverflow