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

Comment formater des nombres en SQL

La plupart des principaux SGBDR nous permettent de formater les nombres à l'aide de SQL. Certains ne fournissent que des capacités de formatage de base, tandis que d'autres sont plus avancés.

Vous trouverez ci-dessous des exemples de formatage d'un nombre dans certains des SGBDR les plus populaires.

MySQL

Dans MySQL, nous pouvons utiliser le FORMAT() fonction pour formater un nombre dans un format spécifique. Cette fonction accepte trois paramètres ; le nombre, le nombre de décimales et un paramètre régional facultatif :

SELECT FORMAT(123456.789, 2);

Résultat :

123,456.79

Comme mentionné, vous pouvez également passer un troisième argument pour spécifier les paramètres régionaux à utiliser pour le modèle de formatage. Voir Comment formater des nombres dans MySQL pour un exemple.

Pour formater des nombres en devise, consultez Comment formater des nombres en devise dans MySQL.

Oracle

Oracle Database nous offre un certain nombre d'options en matière de formatage des nombres.

En particulier, le TO_CHAR(number) nous permet de formater un nombre en fonction de notre propre modèle de format personnalisé.

Exemple :

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

Résultat :

$12,345.00

Le premier argument est le nombre à formater et le deuxième argument est le modèle de format. Le modèle de format se compose d'un ou plusieurs éléments de format, chacun représentant un élément différent dans la sortie formatée.

Dans l'exemple ci-dessus, nous utilisons le 9 caractère pour représenter chaque chiffre, et le 0 caractère pour sortir le chiffre ou zéro (selon qu'un chiffre existe ou non à cette position). Nous utilisons également G pour un séparateur de groupe sensible aux paramètres régionaux et D pour un séparateur décimal compatible avec les paramètres régionaux. Le fm supprime tout rembourrage de début ou de fin qui pourrait être appliqué au résultat.

Voici une liste complète des éléments de format que vous pouvez utiliser pour votre modèle de format lors du formatage des nombres.

Il existe d'autres façons de formater les nombres dans Oracle. Par exemple, le LPAD() La fonction peut être utilisée pour convertir des nombres en une chaîne et les formater exactement comme vous le souhaitez à la volée. Des fonctions comme CAST() peut également avoir un effet sur la façon dont un nombre est formaté, selon le type de données dans lequel il est converti.

Voir Comment formater des nombres dans Oracle pour plus de détails et des exemples.

PostgreSQL

Comme Oracle, PostgreSQL a aussi un TO_CHAR() fonction, et cela fonctionne à peu près de la même manière :

SELECT TO_CHAR(923, 'fm000G000th');

Résultat :

000,923rd

Ici, j'ai utilisé le 0 élément de format pour générer des zéros non significatifs, même lorsque le nombre d'origine ne comportait aucun chiffre à cet endroit. Dans ce cas, j'ai utilisé le th élément de format pour convertir le nombre en son ordinal. J'ai aussi utilisé G pour un séparateur de groupe sensible aux paramètres régionaux.

Voici une liste de modèles de modèles que la chaîne de format peut comprendre lors du formatage des nombres, ainsi que les modificateurs de format.

Une autre façon de formater un nombre dans PostgreSQL est de le convertir en money Type de données. Numéros stockés en tant que money sont affichés dans un format compatible avec les paramètres régionaux, avec le symbole monétaire, le séparateur de groupe, le séparateur décimal, etc. appropriés :

SELECT CAST(10000 as money);

Résultat :

$10,000.00

Voir Comment formater des nombres dans PostgreSQL pour plus d'exemples de formatage de nombres dans PostgreSQL.

SQL Server

SQL Server a le FORMAT() fonction, qui fonctionne un peu comme Oracle et PostgreSQL TO_CHAR() fonction, en ce sens qu'elle vous permet de formater des nombres en fonction d'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 |
+------------+----------------+-------------+

Cet exemple illustre trois spécificateurs de format standard, chacun produisant le nombre dans un format spécifique.

Nous pouvons également utiliser nos propres spécificateurs de format personnalisés, ce qui nous permet de créer notre propre format, au cas où le format standard ne nous conviendrait pas.

Vous pouvez également faire des choses comme, formater les nombres dans leur équivalent hexadécimal, ou en utilisant la notation exponentielle, etc.

Et vous pouvez passer un troisième argument facultatif pour spécifier les paramètres régionaux pour lesquels formater le nombre (il formate le nombre en utilisant les conventions de ces paramètres régionaux).

Voir Comment formater des nombres dans SQL Server pour plus d'exemples.

MariaDB

Comme MySQL, MariaDB a un FORMAT() fonction, qui fournit le formatage de base des nombres.

Voici un exemple d'utilisation de cette fonction pour formater un nombre en utilisant différents paramètres régionaux :

SELECT 
    FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
    FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
    FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";

Résultat :

+--------------+-----------------+--------------------+
| Tamil, India | German, Germany | Chinese, Hong Kong |
+--------------+-----------------+--------------------+
| 1,23,456.79  | 123.456,79      | 123,456.79         |
+--------------+-----------------+--------------------+

Voir Comment formater des nombres dans MariaDB pour plus d'exemples.

SQLite

SQLite est plus limité que les autres SGBD en ce qui concerne le formatage des nombres. Cependant, il existe des moyens d'obtenir un formatage de base des nombres :

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

Résultat :

123,456,789

Le PRINTF() La fonction peut générer des séparateurs de groupe pour les nombres entiers, mais pas pour les nombres réels/à virgule flottante. Pour formater des nombres réels/à virgule flottante, vous devez faire un peu plus de travail. Voir Formater les nombres avec une virgule dans SQLite pour un exemple de ce que je veux dire.

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