MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come formattare i numeri con le virgole in SQL

La maggior parte dei principali RDBMS ha funzioni che ci consentono di formattare i numeri con virgole come separatore di gruppo o separatore decimale.

Alcuni RDBMS generano anche determinati tipi di dati numerici con virgole nella posizione pertinente.

Di seguito sono riportati esempi di formattazione di numeri con virgole in alcuni dei DBMS più diffusi.

MySQL

In MySQL, possiamo usare FORMAT() funzione per formattare i numeri con le virgole:

SELECT FORMAT(123456.789, 2);

Risultato:

123,456.79

Non è necessario specificare dove devono andare le virgole. La funzione sa dove metterli.

Questa funzione accetta anche un terzo argomento per specificare la locale. Non tutte le impostazioni locali utilizzano una virgola come separatore di gruppo:alcune versioni utilizzano una virgola come separatore decimale. Il FORMAT() la funzione è abbastanza intelligente da sapere quale convenzione utilizzare.

Esempio:

SELECT FORMAT(123456.789, 2, 'de_DE');

Risultato:

123,456.79

Oracolo

In Oracle possiamo usare il TO_CHAR() funzione per formattare un numero con virgole:

SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;

Risultato:

12,345.00

Il G format element è un segnaposto per il separatore di gruppo e la D è per il separatore decimale.

In questo caso, il separatore di gruppo emette una virgola e il carattere decimale emette un punto. Questo perché la mia sessione attuale è NLS_TERRITORY il parametro è impostato su Australia .

È vero che potremmo semplicemente usare una virgola hardcoded invece della G format, ma presuppone che il separatore di gruppo sia una virgola. Non tutte le impostazioni internazionali utilizzano una virgola come separatore di gruppo.

Vedere Come formattare un numero con una virgola in Oracle per ulteriori informazioni ed esempi di formattazione di numeri con virgole in Oracle.

SQL Server

In SQL Server possiamo usare FORMAT() funzione per formattare i numeri con le virgole. Questa funzione accetta il numero e una stringa di formato:

SELECT 
    FORMAT(123456.789, 'N') AS "Number",
    FORMAT(123456.789, 'P') AS "Percent",
    FORMAT(123456.789, 'C') AS "Currency";

Risultato:

+------------+----------------+-------------+
| Number     | Percent        | Currency    |
|------------+----------------+-------------|
| 123,456.79 | 12,345,678.90% | $123,456.79 |
+------------+----------------+-------------+

La funzione accetta anche un argomento facoltativo "culture" per specificare le impostazioni locali da utilizzare per l'output formattato.

Puoi anche creare la tua stringa di formato personalizzata in modo da poter determinare con precisione dove va ogni separatore di migliaia e separatore decimale.

Vedere Come formattare i numeri con le virgole in SQL Server per esempi.

PostgreSQL

PostgreSQL ha un TO_CHAR() funzione che funziona come l'omonima funzione di Oracle:

SELECT TO_CHAR(123456.78, 'fm999G999D99');

Risultato:

123,456.78

Questa funzione è a conoscenza della locale, quindi presenterà il gruppo appropriato e i separatori decimali per la locale.

PostgreSQL ha anche un money tipo di dati, che viene emesso in un formato compatibile con le impostazioni locali. Vedi Formattare i numeri con le virgole in PostgreSQL per un esempio.

SQLite

SQLite è un po' più limitato rispetto alla maggior parte degli altri DBMS. Tuttavia, ha un printf() funzione che ci permette di formattare i numeri secondo una stringa di formato:

SELECT printf("%,d", 123456789);

Risultato:

123,456,789

Funziona bene con gli interi, ma i numeri in virgola mobile/reale richiedono un po' più di lavoro. Vedi Formattare i numeri con una virgola in SQLite per ulteriori informazioni.

Aggiorna :SQLite 3.38.0 (rilasciato il 22 febbraio 2022) è stato rinominato printf() funzione in format() . L'originale printf() name viene mantenuto come alias per la compatibilità con le versioni precedenti.

Quindi l'esempio sopra può essere modificato in questo:

SELECT format("%,d", 123456789);

Risultato:

123,456,789

MariaDB

In MariaDB, possiamo usare il FORMAT() funzione per formattare un numero con virgole:

SELECT FORMAT(123456.789, 2);

Risultato:

123,456.79

Come con la funzione MySQL con lo stesso nome, non è necessario specificare dove devono andare le virgole. La funzione sa dove metterli.