sql - dato - boolean oracle example
¿Hay algún tipo booleano en las bases de datos Oracle? (10)
¿Hay algún tipo booleano en las bases de datos de Oracle, similar al tipo de datos BIT
en MS SQL Server?
Hay un tipo booleano para usar en pl / sql , pero ninguno puede usarse como el tipo de datos de una columna.
No
Puedo usar:
IS_COOL NUMBER(1,0)
1 - true
0 - false
--- disfruta de Oracle
O use char Y / N como se describe aquí
No en el nivel SQL y eso es una pena. Sin embargo, hay uno en PLSQL.
No solo falta el tipo de datos booleano en el SQL de Oracle (no PL / SQL), sino que tampoco tienen una recomendación clara sobre qué usar. Vea este hilo en asktom. De recomendar CHAR(1) ''Y''/''N''
, cambian a NUMBER(1) 0/1
cuando alguien señala que ''Y''/''N''
depende del idioma inglés, mientras que, por ejemplo, los programadores alemanes pueden usar ''J''/''N''
lugar.
Lo peor es que defienden esta decisión estúpida como defienden la estupidez ''''=NULL
.
No, no existe el tipo booleano, pero en lugar de esto, puedes 1/0 (número de tipo), o ''Y'' / ''N'' (tipo char), o ''true'' / ''false'' (tipo varchar2).
No, no hay un tipo booleano en la base de datos Oracle, pero puede 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, por defecto esta columna obtiene 1.
Aquí pone un cheque que limita el valor de la columna, solo ponga 1 o 0
ALTER TABLE table_name ADD
CONSTRAINT name_constraint
column_name_check (ONOFF in ( ''1'', ''0'' ));
Según las respuestas de Ammoq y kupa, usamos el número (1) con el valor predeterminado de 0 y no permitimos 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.
Solo porque nadie lo mencionó todavía: usar RAW (1) también parece una práctica común.
Un truco común para ahorrar espacio es almacenar valores booleanos como un CHAR de Oracle, en lugar de NUMBER:
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;