Alcuni DBMS hanno funzioni che ci consentono di formattare i numeri come valuta semplicemente passando la stringa di formato appropriata. Questo converte il numero in una stringa con il simbolo della valuta applicabile, il separatore di gruppo e il punto decimale (se pertinente).
Altri DBMS non lo rendono così facile e devi prima fare un po' di lavoro.
Di seguito sono riportati esempi di utilizzo di SQL per formattare i numeri come valuta in alcuni dei DBMS più diffusi.
Oracolo
Oracle Database ci fornisce il TO_CHAR(number)
funzione, che ci consente di formattare i numeri passando un modello di formato (o una stringa di formato). Possiamo usare questa funzione per restituire un numero come valuta.
Oracle fornisce alcuni elementi di formato per la restituzione del simbolo di valuta, a seconda del simbolo di valuta richiesto:il simbolo della valuta locale, il simbolo della valuta ISO o il simbolo della doppia valuta.
Ecco un esempio di tutti e tre:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Risultato:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Vedi Come formattare un numero come valuta in Oracle per ulteriori informazioni ed esempi.
SQL Server
SQL Server fornisce la funzione FORMAT(), che ci consente di formattare numeri e date. Il C
l'identificatore di formato può essere utilizzato per restituire un numero come valuta:
SELECT FORMAT(1234, 'C');
Risultato:
$1,234.00
Ci sono altre cose che puoi fare con la stringa di formato, come specificare quante cifre decimali restituire.
La funzione accetta anche un terzo argomento facoltativo, che può essere utilizzato per specificare le impostazioni locali da utilizzare per la formattazione del numero e della valuta. Locali differenti usano convenzioni differenti per i loro numeri e valuta.
Per ulteriori informazioni ed esempi, vedere Come formattare i numeri come valuta in SQL Server (T-SQL).
PostgreSQL
PostgreSQL ha un money
tipo di dati che verrà in genere formattato nella valuta locale durante l'output:
SELECT CAST(3145 as money);
Risultato:
$3,145.00
PostgreSQL ha anche un TO_CHAR()
funzione che converte il valore in una stringa e lo formatta in base alla stringa di formato che forniamo. Pertanto, possiamo usarlo per formattare i numeri come valuta passando la stringa di formato appropriata.
Vedi Come formattare i numeri come valuta in PostgreSQL per ulteriori informazioni.
MySQL
In MySQL, dobbiamo fare un po' più di lavoro. MySQL non ci fornisce uno specificatore di formato per il simbolo di valuta, quindi dobbiamo fornire il nostro:
SELECT CONCAT('$', FORMAT(1234.5678, 2));
Risultato:
$1,234.57
Qui, abbiamo usato il CONCAT()
per concatenare il simbolo della valuta e il numero, e abbiamo usato il FORMAT()
funzione per formattare il numero nel formato desiderato.
È possibile specificare una locale per la formattazione numerica. Questo determina quali caratteri vengono utilizzati per il separatore di gruppo e il punto decimale.
Per ulteriori informazioni, vedere Come formattare i numeri come valuta in MySQL.
MariaDB
MariaDB è molto simile a MySQL e possiamo usare lo stesso metodo che abbiamo usato con MySQL.
Ecco un esempio che specifica una lingua da utilizzare per la formattazione dei numeri:
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));
Risultato:
€8.790,24
In questo caso abbiamo fornito il simbolo dell'Euro (€
) e formattato il numero per utilizzare le convenzioni di numerazione utilizzate in Germania.
Per ulteriori informazioni, consulta Formattare un numero come valuta in MariaDB.
SQLite
SQLite ha un PRINTF()
funzione che ci permette di formattare un numero in base a una stringa di formato. Ad esempio, possiamo usarlo per formattare il numero su un determinato numero di cifre decimali, oltre a aggiungere un simbolo di valuta.
SELECT PRINTF("$%.2f", 123.457);
Risultato:
$123.46
Aggiorna :SQLite 3.38.0 (rilasciato il 22 febbraio 2022) è stato rinominato PRINTF()
funzione su FORMAT()
. Il PRINTF()
originale name viene mantenuto come alias per la compatibilità con le versioni precedenti.
Quindi l'esempio sopra può essere modificato in questo:
SELECT FORMAT("$%.2f", 123.457);
Risultato:
$123.46
Consulta la documentazione di SQLite per ulteriori informazioni su FORMAT()
funzione.