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:
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:
3°
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