Существует ли булев тип в базах данных оракула?

Существует ли логический тип в оракулных базах данных, аналогичный типу BIT в MS SQL?

Ответ 1

В Oracle SQL (не PL/SQL) отсутствует некий логический тип данных, но у них также нет четкой рекомендации относительно того, что использовать. См. этот поток на asktom. Из рекомендаций CHAR(1) 'Y'/'N' они переключаются на NUMBER(1) 0/1, когда кто-то указывает, что 'Y'/'N' зависит от английского языка, в то время как, например, Немецкие программисты могут вместо этого использовать 'J'/'N'.

Хуже всего то, что они защищают это глупое решение, как будто они защищают глупость ''=NULL.

Ответ 2

Неа.

Может использовать:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- наслаждайтесь Oracle

Или используйте char Y/N как описано здесь

Ответ 3

В соответствии с ответами Ammoq и kupa, мы используем число (1) со значением по умолчанию 0 и не допускаем null.

здесь добавьте столбец для демонстрации:

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

Надеюсь, это поможет кому-то.

Ответ 4

Не на уровне SQL и жаль В PLSQL есть один, хотя

Ответ 5

Нет такого типа boolean, но вместо этого вы можете использовать 1/0 (номер типа) или 'Y'/'N' (тип char), или 'true'/'false' (тип varchar2).

Ответ 7

Общим трюком для экономии пространства является сохранение значений boolean как Oracle CHAR, а не NUMBER:

Ответ 8

Просто потому, что никто не упомянул об этом: использование RAW (1) также кажется обычной практикой.

Ответ 9

Нет, в базе данных 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' ));

Ответ 10

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;