Esiste un tipo booleano nei database Oracle?

Esiste un tipo booleano nei database Oracle, simile al tipo di dati BIT in Ms SQL Server?

Non solo manca il tipo di dati booleano nell’SQL di Oracle (non in PL / SQL), ma non hanno nemmeno una chiara raccomandazione su cosa invece usare. Vedi questo thread su asktom. Dal suggerire CHAR(1) 'Y'/'N' passano a NUMBER(1) 0/1 quando qualcuno sottolinea che 'Y'/'N' dipende dalla lingua inglese, mentre per esempio i programmatori tedeschi potrebbero usare 'J'/'N' invece.

La cosa peggiore è che difendono questa stupida decisione proprio come difendono la stupidità ''=NULL .

No.

Poter usare:

 IS_COOL NUMBER(1,0) 1 - true 0 - false 

— goditi Oracle

Oppure usa Y / N char come descritto qui

Come per le risposte di Ammoq e kupa, usiamo il numero (1) con il valore predefinito di 0 e non ammettiamo valori nulli.

ecco una colonna add per dimostrare:

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

Spero che questo aiuti qualcuno.

Non a livello SQL e questo è un peccato. Ce n’è uno in PLSQL però

No non esiste il tipo booleano, ma al posto di questo è ansible 1/0 (tipo numero), o ‘Y’ / ‘N’ (tipo char), o ‘true’ / ‘false’ (tipo varchar2).

Esiste un tipo booleano da usare in pl / sql , ma nessuno che può essere usato come tipo di dati di una colonna.

Un trucco comune di risparmio di spazio sta memorizzando i valori booleani come un CHAR Oracle, piuttosto che NUMBER:

Solo perché nessuno lo ha ancora menzionato: usare RAW (1) sembra anche una pratica comune.

No, non c’è un tipo booleano nel Database Oracle, ma puoi farlo in questo modo:

Puoi mettere un vincolo di controllo su una colonna.

Se la tua tabella non ha una colonna di controllo, puoi aggiungerla:

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

Quando aggiungi un registro, per impostazione predefinita questa colonna ottiene 1.

Qui metti un segno di spunta che limita il valore della colonna, metti solo 1 o 0

 ALTER TABLE table_name ADD CONSTRAINT name_constraint column_name_check (ONOFF in ( '1', '0' )); 
 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;