MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment formater des nombres avec des virgules en SQL

La plupart des principaux SGBDR ont des fonctions qui nous permettent de formater les nombres avec des virgules comme séparateur de groupe ou séparateur décimal.

Certains SGBDR génèrent également certains types de données numériques avec des virgules à l'endroit approprié.

Vous trouverez ci-dessous des exemples de formatage de nombres avec des virgules dans certains des SGBD les plus populaires.

MySQL

Dans MySQL, nous pouvons utiliser le FORMAT() fonction pour formater les nombres avec des virgules :

SELECT FORMAT(123456.789, 2);

Résultat :

123,456.79

Il n'est pas nécessaire de spécifier où les virgules doivent aller. La fonction sait où les mettre.

Cette fonction accepte également un troisième argument pour spécifier la locale. Tous les paramètres régionaux n'utilisent pas une virgule comme séparateur de groupe - certains paramètres régionaux utilisent une virgule comme séparateur décimal. Le FORMAT() la fonction est suffisamment intelligente pour savoir quelle convention utiliser.

Exemple :

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

Résultat :

123.456,79

Oracle

Dans Oracle, nous pouvons utiliser le TO_CHAR() fonction pour formater un nombre avec des virgules :

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

Résultat :

12,345.00

Le G l'élément de format est un espace réservé pour le séparateur de groupe, et le D est pour le séparateur décimal.

Dans ce cas, le séparateur de groupe produit une virgule et le caractère décimal produit un point. C'est parce que le NLS_TERRITORY de ma session actuelle le paramètre est défini sur Australia .

Il est vrai que nous pourrions simplement utiliser une virgule codée en dur au lieu du G élément de format, mais cela suppose que le séparateur de groupe est une virgule. Tous les paramètres régionaux n'utilisent pas une virgule comme séparateur de groupe.

Voir Comment formater un nombre avec une virgule dans Oracle pour plus d'informations et des exemples de formatage des nombres avec des virgules dans Oracle.

SQL Server

Dans SQL Server, nous pouvons utiliser le FORMAT() fonction pour formater les nombres avec des virgules. Cette fonction accepte le nombre et une chaîne de format :

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

Résultat :

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

La fonction accepte également un argument "culture" facultatif pour spécifier les paramètres régionaux à utiliser pour la sortie formatée.

Vous pouvez également créer votre propre chaîne de format personnalisée afin de pouvoir déterminer précisément où vont chaque séparateur de milliers et séparateur décimal.

Voir Comment formater des nombres avec des virgules dans SQL Server pour des exemples.

PostgreSQL

PostgreSQL a un TO_CHAR() fonction qui fonctionne comme la fonction d'Oracle du même nom :

SELECT TO_CHAR(123456.78, 'fm999G999D99');

Résultat :

123,456.78

Cette fonction est sensible aux paramètres régionaux, elle présentera donc le groupe approprié et les séparateurs décimaux pour les paramètres régionaux.

PostgreSQL a aussi un money type de données, qui est sorti dans un format compatible avec les paramètres régionaux. Voir Formater les nombres avec des virgules dans PostgreSQL pour un exemple.

SQLite

SQLite est un peu plus limité par rapport à la plupart des autres SGBD. Cependant, il a un printf() fonction qui nous permet de formater les nombres selon une chaîne de format :

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

Résultat :

123,456,789

Cela fonctionne bien avec les nombres entiers, mais les nombres réels/à virgule flottante nécessitent un peu plus de travail. Voir Formater les nombres avec une virgule dans SQLite pour en savoir plus à ce sujet.

Mettre à jour :SQLite 3.38.0 (publié le 22 février 2022) a renommé printf() fonction à format() . Le printf() d'origine nom est conservé en tant qu'alias pour la rétrocompatibilité.

Ainsi, l'exemple ci-dessus peut être remplacé par ceci :

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

Résultat :

123,456,789

MariaDB

Dans MariaDB, nous pouvons utiliser le FORMAT() fonction pour formater un nombre avec des virgules :

SELECT FORMAT(123456.789, 2);

Résultat :

123,456.79

Comme avec la fonction MySQL du même nom, il n'est pas nécessaire de spécifier où les virgules doivent aller. La fonction sait où les mettre.