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 3782 Visite 0
Emiliano Cortimiglia

Emiliano Cortimiglia

Autore di questa domanda

Risposte ( 3 approvate )

  1. Matteo Formesi
    +2
    30-05-2018 12:29:37
    Rispondi

    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.

  2. Luigi Empolo
    +1
    30-05-2018 12:39:20
    Rispondi

    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.

  3. Giacomo Barrile
    0
    30-05-2018 12:43:23
    Rispondi

    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.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

 Domanda Precedente

 Elenco Domande 

Domanda Successiva