Condividi
Campo booleano in Oracle
Ho la necessità di aggiungere un campo booleano ad una tabella di un database Oracle, purtroppo come saprete esso non tratta questo tipo di dato. Facendo una ricerca su Google ho trovato alcune soluzioni di appoggio per sopperire a questa mancanza, spiegavano che si può gestire il tipo boolean in Oracle utilizzando:
- Usare gli interi ed assegnare i valori 0 o 1 al campo;
- Usare un singolo carattere ed assegnare i soli due valori 'Y' o 'N'
- Usare un Enum spuntando la condizione che sia un campo obbligatorio
Dalla vostra esperienza di utilizzatori Oracle trovate queste soluzioni per trattare i tipi boolean valide? E se si quale utilizzate e perché?
In Corso
3
Oracle
30-05-2018
3 Risposte
4068 Visite
0
Risposte ( 3 approvate )
Oracle stesso usa i caratteri Y/N per trattare i tipi booleani, e per completezza d'informazione dobbiamo dire che il PL/SQL (Procedural Language SQL) di Oracle gestice i tipi bool , sono invece le tabelle che non li supportano.
Fatta questa precisazione, potresti considerare di usare il solo carattere 'Y' per indicare il valore vero o 1 se preferisci, e NULL per il falso; questo ti consentirebbe di avere una ricerca su questo campo estremamente veloce ed inoltre occuperebbe pochissimo spazio.
Se vuoi ridurre lo spazio occupato dal campo booleano ti consiglio di usare i caratteri Y/N imponendo come vincolo che siano i soli due 'valori' ammessi.
Purtroppo Oracle non supporta tipi di dato quali: BOOLEAN, BIT o TINYINT e pertanto il CHAR occupando un solo byte è il tipo più piccolo che puoi trovare in Oracle Database.
Sebbene Oracle stesso usa il CHAR come tipo Boolean dal punto di vista logico a mio avviso la soluzione migliore è quella di usare un INT con i valori 0 e 1, questi risultano meglio trattabili poi a livello di linguaggio di programmazione.