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

Come formattare i numeri in PostgreSQL

Quando lavori con Postgres, puoi usare to_char() funzione per emettere numeri in un determinato formato.

Il modo in cui funziona è che fornisci due argomenti. Il primo argomento è il numero da formattare. Il secondo argomento determina come è formattato.

Il valore restituito è testo .

A seconda delle tue esigenze, potresti preferire convertire il numero nel tipo di dati appropriato, ad esempio utilizzando cast() funzione.

Di seguito sono riportati esempi di entrambi i metodi.

Esempio

Ecco un esempio di base da dimostrare.

SELECT to_char(10, '99.99'); 

Risultato:

10:00

Il 9 s in realtà hanno un significato speciale in questo contesto. Questo carattere è uno dei modelli di modello validi in cui può essere costituita la stringa di formato durante la formattazione dei numeri.

Nel caso di 9 , specifica la posizione di una cifra, ma se è uno zero iniziale, verrà sostituito da uno spazio, mentre se è uno zero finale e viene specificata la modalità di riempimento, verrà eliminato.

Se rimuovo la posizione decimale e la parte dei secondi frazionari, ottengo un risultato diverso.

SELECT to_char(10, '99'); 

Risultato:

10

Rilascia gli zeri iniziali

Puoi sostituire 9 con 0 se vuoi eliminare gli zeri iniziali e finali, anche se insignificanti.

Ecco un esempio che dimostra la differenza tra i due.

SELECT 
  to_char(0010, '9999') AS "9999",
  to_char(0010, '0000') AS "0000"; 

Risultato:

 9999 | 0000 -------+------- 10 | 0010

Modelli di modello

Come visto negli esempi precedenti, la stringa di formato è costituita da uno o più modelli di modello.

Ad esempio, 9999 è una stringa di formato composta da quattro modelli di modelli, ciascuno dei quali è 9 .

La posizione decimale è un altro modello di modello.

Avrei potuto usare un D al posto della cifra decimale. Questo utilizza la locale corrente per la formattazione effettiva.

SELECT 
  to_char(10, '99.99') AS "99.99",
  to_char(10, '99D99') AS "99D99"; 

Risultato:

99,99 | 99D99 --------+-------- 10.00 | 10.00

Per un elenco completo di modelli e modificatori di modelli, vedere Modelli e modificatori di modelli per la formattazione numerica in Postgres.

Modificatori del modello di modello

Ci sono anche alcuni modificatori che possono essere utilizzati insieme al modello di modello. Questi cambiano il modo in cui viene formattato l'output, a seconda del modificatore utilizzato.

Nello specifico, ci sono tre modificatori che possono essere usati con la formattazione numerica.

Modificatore Descrizione
FM prefisso modalità riempimento (sopprime zeri finali e spazi vuoti)
TH suffisso suffisso numero ordinale maiuscolo
th suffisso suffisso del numero ordinale minuscolo

Nota che il primo viene aggiunto come prefisso al modello del modello e gli altri due vengono aggiunti come suffisso.

Numeri ordinali

Un requisito comune è convertire un numero nel suo ordinale. Possiamo usare sia TH o th per questo, a seconda che vogliamo che il suffisso sia maiuscolo o minuscolo.

Ecco un esempio.

SELECT to_char(03, 'FM99th'); 

Risultato:

In questo caso ho usato anche FM per eliminare eventuali spazi vuoti e zeri finali.

Ecco un confronto tra l'utilizzo di FM e omettendolo:

SELECT 
  to_char(03, '99th') AS "99th",
  to_char(03, 'FM99th') AS "FM99th"; 

Risultato:

 99 | FM99° -------+-------- 3° | 3°

Se guardi da vicino, la prima colonna ha spazi vuoti iniziali, mentre la seconda colonna no.

Valuta

Un altro requisito comune è quello di produrre un numero in una determinata valuta.

In questo caso, possiamo usare la L modello di modello per visualizzare un simbolo di valuta compatibile con le impostazioni locali.

SELECT to_char(03, 'LFM99D00'); 

Risultato:

$ 3,00

Numeri firmati

Esistono anche modelli di modelli per i numeri con segno.

Ecco un esempio.

SELECT to_char(27, 'S99'); 

Risultato:

+27

Qui ho usato S per aggiungere un segno che riconosca la locale ancorato al numero.

In questo caso era un numero positivo. Ecco un altro esempio che utilizza un valore negativo.

SELECT to_char(-27, 'S99'); 

Risultato:

-27

Esistono molti altri modelli di modello che possono essere utilizzati per i numeri con segno.

Per esempi, consulta Anteporre un segno più/meno a un numero in Postgres.

E come accennato, dai un'occhiata a Modelli e modificatori di modelli per la formattazione numerica in Postgres per un elenco completo di modificatori di modelli che puoi utilizzare durante la formattazione dei numeri.

Tipo di dati

Come accennato, il to_char() la funzione restituisce il risultato come testo .

A seconda delle tue esigenze, potresti trovare meglio convertire il numero in un tipo di dati più appropriato.

Ecco un esempio che converte un numero nei dati del denaro digitare.

SELECT cast(10 as money); 

Risultato:

$ 10,00