Problema:
Desideri rimuovere gli zeri finali dalla parte frazionaria di un numero decimale.
Esempio:
Il nostro database ha una tabella denominata ribbon
con i dati nelle colonne id , nome e larghezza (in metri, indicato da un numero decimale con una parte frazionaria di 4 cifre).
id | larghezza | |
---|---|---|
1 | Large Satin N24 | 1.2000 |
2 | Creazione Yc2 | 0,5500 |
3 | Tre colori 4F1 | 3.2050 |
4 | Nastro Blu LB1 | 0,1265 |
Prendiamo i nomi dei nastri insieme alla loro larghezza in metri, ma senza zeri finali.
Soluzione:
Useremo l'operatore ‘::’
per convertire il numero decimale in un tipo di dati REAL. Ecco la domanda che scriveresti:
SELECT name, width::REAL FROM ribbon;
Ecco il risultato:
nome | nuova_larghezza |
---|---|
Large Satin N24 | 1.2 |
Creazione Yc2 | 0,55 |
Tre colori 4F1 | 3.205 |
Nastro Blu LB1 | 0,1265 |
Discussione:
Usa il ::
per convertire un numero decimale contenente zeri finali in un numero senza zeri aggiuntivi. Questo operatore converte il valore a sinistra nel tipo di dati posizionato a destra.
Nel nostro esempio, il valore decimale in larghezza è stato convertito nel tipo di dati REAL, che non visualizza gli zeri finali. Il nastro "Large Satin N24" ha una width
valore di 1.2000 – ma non abbiamo bisogno di zeri nella parte frazionaria di questo numero. Pertanto, abbiamo convertito nel tipo di dati REAL per tagliarli (nel nostro esempio, sono stati rimossi tre zeri). È un modo conveniente per visualizzare il numero perché rimuove solo gli zeri finali; ad esempio, "Blue Ribbon LB1" non ha zeri finali dopo la virgola decimale, quindi il suo valore rimane lo stesso dopo la conversione.
Se hai lo stesso numero di zeri nella parte frazionaria di tutti i tuoi valori, usa il TRUNC()
funzione. Richiede due argomenti:il valore/nome della colonna contenente il numero e un numero intero che indica il numero desiderato di cifre frazionarie; il resto è tagliato. Guarda lo stesso esempio con valori diversi nella colonna width
:
id | larghezza | |
---|---|---|
1 | Large Satin N24 | 1.200 |
2 | Creazione Yc2 | 0,500 |
3 | Tre colori 4F1 | 3.200 |
4 | Nastro Blu LB1 | 0,100 |
Soluzione 2:
Ecco la domanda che scriveresti:
SELECT name, TRUNC(width,1) FROM ribbon;
Ecco il risultato:
nome | nuova_larghezza |
---|---|
Large Satin N24 | 1.0 |
Creazione Yc2 | 0,5 |
Tre colori 4F1 | 3.2 |
Nastro Blu LB1 | 0.1 |
Nella parte decimale viene visualizzata solo una cifra. Nota che TRUNC() taglia tutte le cifre, non solo gli zeri.