¿Existe algún tipo booleano en las bases de datos Oracle?
¿Existe algún tipo booleano en las bases de datos Oracle, similar al BIT
tipo de datos en Ms SQL Server?
Antes de la versión 23c (2023), no solo faltaba el tipo de datos booleano en SQL de Oracle (no en PL/SQL), sino que tampoco tenían una recomendación clara sobre qué usar en su lugar. Vea este hilo en Asktom. Desde recomendar CHAR(1) 'Y'/'N'
que cambien hasta NUMBER(1) 0/1
cuando alguien señala que 'Y'/'N'
depende del idioma inglés, mientras que, por ejemplo, los programadores alemanes podrían usarlo 'J'/'N'
en su lugar.
Lo peor es que defienden esta estúpida decisión igual que defienden la ''=NULL
estupidez.
Oracle 23c finalmente admite tipos de datos booleanos en todos los contextos, junto con varias otras características de las que carecía en comparación con otras bases de datos.
SQL> select true;
TRUE
-----------
TRUE
SQL> create table test1(a boolean);
Table created.
SQL> insert into test1 values (true),(false),(to_boolean(0)),(to_boolean('y'));
4 rows created.
Pero el problema de las cadenas vacías nunca cambiará.
No.
Puedo usar:
IS_COOL NUMBER(1,0)
1 - true
0 - false
--- disfruta del oráculo
O utilice el carácter Y/N como se describe aquí
Según las respuestas de Ammoq y kupa, usamos el número (1) con el valor predeterminado 0 y no permitimos valores nulos.
aquí hay una columna adicional para demostrar:
ALTER TABLE YourSchema.YourTable ADD (ColumnName NUMBER(1) DEFAULT 0 NOT NULL);
Espero que esto ayude a alguien.
No, no existe un tipo booleano en Oracle Database, pero puedes hacerlo de esta manera:
Puede poner una restricción de verificación en una columna.
Si su tabla no tiene una columna de verificación, puede agregarla:
ALTER TABLE table_name
ADD column_name_check char(1) DEFAULT '1';
Cuando agrega un registro, de forma predeterminada esta columna obtiene 1.
Aquí pones un check que limita el valor de la columna, solo pon 1 o 0
ALTER TABLE table_name ADD
CONSTRAINT name_constraint
column_name_check (ONOFF in ( '1', '0' ));