tipo example dato sql database oracle boolean sqldatatypes

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?



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;