sql table - Esiste un tipo booleano nei database Oracle?





true in (10)


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

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




No.

Poter usare:

IS_COOL NUMBER(1,0)

1 - true
0 - false

--- goditi Oracle

Oppure usa Y / N char come descritto qui




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




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




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




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;



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




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 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 .




La mia risposta preferita è come suggerito dalla prima frase in questa discussione. Utilizzare un elenco Adjacency per mantenere la gerarchia e utilizzare i set nidificati per interrogare la gerarchia.

Il problema finora è stato che il metodo di coverion da un Adjacecy List a Nested Sets è stato spaventosamente lento perché la maggior parte delle persone usa il metodo RBAR estremo conosciuto come "Push Stack" per fare la conversione ed è stato considerato come molto costoso per raggiungere il Nirvana della semplicità di manutenzione con l'Adjacency List e le fantastiche prestazioni degli Insiemi Nidificati. Di conseguenza, molte persone finiscono per doversi accontentare dell'uno o dell'altro soprattutto se ci sono più di, per dire, un pessimo 100.000 nodi o giù di lì. L'utilizzo del metodo push stack può richiedere un'intera giornata per eseguire la conversione su ciò che MLM'ers considererebbe una gerarchia di piccoli milioni di nodi.

Ho pensato di dare a Celko un po 'di concorrenza inventando un metodo per convertire una lista di adiacenza in serie nidificate a velocità che sembrano semplicemente impossibili. Ecco le prestazioni del metodo push stack sul mio laptop i5.

Duration for     1,000 Nodes = 00:00:00:870 
Duration for    10,000 Nodes = 00:01:01:783 (70 times slower instead of just 10)
Duration for   100,000 Nodes = 00:49:59:730 (3,446 times slower instead of just 100) 
Duration for 1,000,000 Nodes = 'Didn't even try this'

Ed ecco la durata del nuovo metodo (con il metodo push stack tra parentesi).

Duration for     1,000 Nodes = 00:00:00:053 (compared to 00:00:00:870)
Duration for    10,000 Nodes = 00:00:00:323 (compared to 00:01:01:783)
Duration for   100,000 Nodes = 00:00:03:867 (compared to 00:49:59:730)
Duration for 1,000,000 Nodes = 00:00:54:283 (compared to something like 2 days!!!)

Sì, è corretto. 1 milione di nodi convertiti in meno di un minuto e 100.000 nodi in meno di 4 secondi.

Puoi leggere il nuovo metodo e ottenere una copia del codice al seguente URL. http://www.sqlservercentral.com/articles/Hierarchy/94040/

Ho anche sviluppato una gerarchia "pre-aggregata" usando metodi simili. Gli MLM e le persone che elaborano le distinte materiali saranno particolarmente interessati a questo articolo. http://www.sqlservercentral.com/articles/T-SQL/94570/

Se ti fermi a dare un'occhiata a entrambi gli articoli, passa al link "Partecipa alla discussione" e fammi sapere cosa ne pensi.





sql database oracle boolean