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

Formater un nombre en tant que devise en SQL

Certains SGBD ont des fonctions qui nous permettent de formater les nombres en tant que monnaie en passant simplement la chaîne de format appropriée. Cela convertit le nombre en une chaîne avec le symbole de devise applicable, le séparateur de groupe et le point décimal (le cas échéant).

Les autres SGBD ne facilitent pas les choses, et vous devez d'abord faire un peu de travail.

Vous trouverez ci-dessous des exemples d'utilisation de SQL pour formater des nombres en tant que devise dans certains des SGBD les plus populaires.

Oracle

Oracle Database nous fournit le TO_CHAR(number) fonction, qui nous permet de formater des nombres en passant un modèle de format (ou une chaîne de format). Nous pouvons utiliser cette fonction pour renvoyer un nombre comme devise.

Oracle fournit quelques éléments de format pour renvoyer le symbole monétaire, selon le symbole monétaire dont vous avez besoin :le symbole monétaire local, le symbole monétaire ISO ou le symbole monétaire double.

Voici un exemple des trois :

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;

Résultat :

            r1              r3            r3 
______________ _______________ _____________ 
kr12.345,00    DKK12.345,00    €12.345,00   

Voir Comment formater un nombre en tant que devise dans Oracle pour plus d'informations et d'exemples.

SQL Server

SQL Server fournit la fonction FORMAT(), qui nous permet de formater des nombres et des dates. Le C le spécificateur de format peut être utilisé pour renvoyer un nombre en tant que devise :

SELECT FORMAT(1234, 'C');

Résultat :

$1,234.00

Il y a d'autres choses que vous pouvez faire avec la chaîne de format, comme spécifier le nombre de décimales à renvoyer.

La fonction accepte également un troisième argument facultatif, qui peut être utilisé pour spécifier les paramètres régionaux à utiliser pour le formatage des nombres et des devises. Différents paramètres régionaux utilisent différentes conventions pour leurs nombres et leur devise.

Voir Comment formater des nombres en tant que devise dans SQL Server (T-SQL) pour plus d'informations et d'exemples.

PostgreSQL

PostgreSQL a un money type de données qui sera généralement formaté dans la devise locale lors de la sortie :

SELECT CAST(3145 as money);

Résultat :

$3,145.00

PostgreSQL a aussi un TO_CHAR() fonction qui convertit la valeur en chaîne et la formate en fonction de la chaîne de format que nous fournissons. Par conséquent, nous pouvons l'utiliser pour formater les nombres en tant que devise en transmettant la chaîne de format appropriée.

Voir Comment formater des nombres en tant que devise dans PostgreSQL pour en savoir plus.

MySQL

Dans MySQL, nous devons faire un peu plus de travail. MySQL ne nous fournit pas de spécificateur de format pour le symbole monétaire, nous devons donc fournir le nôtre :

SELECT CONCAT('$', FORMAT(1234.5678, 2));

Résultat :

$1,234.57

Ici, nous avons utilisé le CONCAT() pour concaténer le symbole monétaire et le nombre, et nous avons utilisé le FORMAT() fonction pour formater le nombre dans le format souhaité.

Il est possible de spécifier une locale pour le formatage numérique. Ceci détermine quels caractères sont utilisés pour le séparateur de groupe et le point décimal.

Voir Comment formater les nombres en tant que devise dans MySQL pour plus d'informations.

MariaDB

MariaDB ressemble beaucoup à MySQL, et nous pouvons utiliser la même méthode que nous avons utilisée avec MySQL.

Voici un exemple qui spécifie un paramètre régional à utiliser pour le formatage des nombres :

SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));

Résultat :

€8.790,24

Dans ce cas, nous avons fourni le symbole Euro ( ) et formaté le numéro pour utiliser les conventions de numérotation utilisées en Allemagne.

Voir Formater un nombre en tant que devise dans MariaDB pour plus d'informations.

SQLite

SQLite a un PRINTF() fonction qui nous permet de formater un nombre basé sur une chaîne de format. Par exemple, nous pouvons l'utiliser pour formater le nombre avec un nombre donné de décimales, et ajouter un symbole monétaire.

SELECT PRINTF("$%.2f", 123.457);

Résultat :

$123.46

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("$%.2f", 123.457);

Résultat :

$123.46

Voir la documentation SQLite pour en savoir plus sur le FORMAT() fonction.