web-dev-qa-db-fra.com

Existe-t-il un type booléen dans les bases de données Oracle?

Existe-t-il un type booléen dans les bases de données Oracle, similaire au type de données BIT dans Ms SQL Server?

225
Peder

Non seulement le type de données booléen est manquant dans le code SQL d'Oracle (pas PL/SQL), mais ils ne contiennent également aucune recommandation claire sur ce qu'il faut utiliser à la place. Voir ce fil sur asktom. En recommandant CHAR(1) 'Y'/'N', ils basculent en NUMBER(1) 0/1 lorsque quelqu'un signale que 'Y'/'N' dépend de la langue anglaise, par exemple. Les programmeurs allemands pourraient utiliser 'J'/'N' à la place.

Le pire, c’est qu’ils défendent cette décision stupide, tout comme ils défendent la stupidité ''=NULL.

245
Erich Kitzmueller

Nan.

Peut utiliser:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- profitez d'Oracle

Ou utilisez le caractère Y/N comme décrit ici

48
Bohdan

Selon les réponses de Ammoq et de Kupa, nous utilisons number (1) avec la valeur par défaut de 0 et n'autorisons pas les valeurs NULL.

voici un ajouter une colonne pour démontrer:

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

J'espère que ça aide quelqu'un.

34
Alex Stephens

Pas au niveau SQL et c'est dommage Il y en a un dans PLSQL bien

14
vc 74

Non, il n'y a pas de type booléen dans Oracle Database, mais vous pouvez le faire de la manière suivante:

Vous pouvez mettre une contrainte de vérification sur une colonne.

Si votre table n'a pas de colonne de contrôle, vous pouvez l'ajouter:

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

Lorsque vous ajoutez un registre, par défaut cette colonne reçoit 1.

Ici, vous mettez une vérification qui limite la valeur de la colonne, il suffit de mettre 1 ou 0

ALTER TABLE table_name ADD
CONSTRAINT name_constraint 
column_name_check (ONOFF in ( '1', '0' ));
12
Roberto Góes

Non, il n'existe pas de type booléen, mais vous pouvez utiliser 1/0 (numéro de type), ou 'Y'/'N' (type char) ou 'true'/'false' (type varchar2).

8
kupa

Il existe un type booléen à utiliser dans pl/sql , mais aucun ne peut être utilisé comme type de données d'une colonne.

5

Une astuce courante permettant d'économiser de l'espace consiste à stocker boolean les valeurs sous forme d'oracle CHAR, plutôt que NUMBER:

4
Pranay Rana

Tout simplement parce que personne n'en a encore parlé: utiliser RAW (1) semble également être une pratique courante.

3
Filburt