PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come rimuovere gli zeri finali da un decimale in PostgreSQL

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.