Oracle
 sql >> Database >  >> RDS >> Oracle

Tipo di dati Oracle:dovrei usare VARCHAR2 o CHAR

Sono preoccupato per gli spazi extra inseriti nei campi VARCHAR2 e per problemi di confronto. So che ci sono modi per confrontarli usando tagliandoli o convertendoli, ma temo che renderà il mio codice disordinato e pieno di bug.

In realtà è proprio il contrario. L'uso di CHAR forzerà le tue stringhe a una lunghezza fissa riempiendole di spazi se sono troppo corte. Quindi, quando si confrontano i CHAR con le stringhe normali in qualsiasi app stia utilizzando i dati, quell'app dovrebbe aggiungere un ritaglio ogni volta. In altre parole, VARCHAR2 è la scelta che porta naturalmente a un codice più pulito.

In generale dovresti sempre usa VARCHAR2, a meno che tu non abbia un motivo molto specifico per cui desideri una colonna CHAR.

Se sei preoccupato per le stringhe che hanno spazi extra nella parte anteriore o finale, allora ci sono alcune opzioni che ti vengono in mente:

  • Assicurati che qualsiasi processo stia eseguendo gli inserti li rifinisca prima di inserirli.
  • Aggiungi un vincolo di controllo sulla colonna che assicuri che string =trim(string).
  • Aggiungi un trigger a livello di riga prima dell'inserimento che esegue un taglio sulle stringhe quando vengono inserite.
  • Assicurati di tagliare le stringhe ogni volta che esegui query sulla tabella