Oracle
 sql >> Base de données >  >> RDS >> Oracle

3 façons de formater un nombre à 2 décimales dans Oracle

Lorsque vous utilisez Oracle Database, vous pouvez utiliser des fonctions telles que TO_CHAR(number) pour renvoyer des nombres sous forme de chaîne, formatée avec deux décimales (ou le nombre de décimales dont vous avez besoin).

Ou vous pouvez utiliser des fonctions comme ROUND(number) et TRUNC(number) pour arrondir ou tronquer le nombre au nombre de décimales requis.

Le TO_CHAR() Fonction

Voici un exemple qui utilise le TO_CHAR(number) fonction :

SELECT TO_CHAR(1.2345, 'fm99D00')
FROM DUAL;

Résultat :

1.23

Dans ce cas, le nombre d'origine a plus de deux décimales, et donc le résultat le tronque simplement au nombre spécifié de zéros qui suivent le caractère décimal/radix (D ) dans le modèle de format.

La raison pour laquelle j'ai utilisé des zéros après le caractère décimal est de fournir des zéros à la fin si nécessaire.

Exemple :

SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Résultat :

7.00

Si je ne veux pas les zéros de fin, je peux changer le 0 caractères à 9 s.

Voici une comparaison des deux :

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2"
FROM DUAL;

Résultat :

     r1    r2 
_______ _____ 
7.00    7.   

Utilisation de 9 s dans ce cas, a donné un caractère de base, mais pas de décimales.

Je dois souligner que fm est un modificateur de format qui supprime tout rembourrage pouvant être appliqué au résultat. Vous pouvez omettre cela si cela ne vous dérange pas que le résultat soit rembourré. Bien que, si vous faites cela, vous pourriez vous retrouver avec des zéros à la fin, même en utilisant le 9 élément de format.

Voici ce qui se passe lorsque je supprime le fm de l'exemple précédent :

SELECT 
    TO_CHAR(7, '99D00') AS "r1",
    TO_CHAR(7, '99D99') AS "r2"
FROM DUAL;

Résultat :

       r1        r2 
_________ _________ 
  7.00      7.00   

Bien sûr, vous n'êtes pas limité à deux décimales ; vous pouvez spécifier plus de décimales dans votre modèle de format si nécessaire.

Exemple :

SELECT TO_CHAR(7, 'fm99D0000')
FROM DUAL;

Résultat :

7.0000

Le ROUND() Fonction

Voici un exemple qui utilise le ROUND(number) fonction :

SELECT ROUND(1.2573, 2)
FROM DUAL;

Résultat :

1.26

Tle ROUND() La fonction arrondit un nombre à une décimale donnée. Ici, nous avons spécifié deux décimales, mais nous aurions pu spécifier n'importe quel nombre.

Dans ce cas, le nombre a été arrondi.

Le TRUNC() Fonction

Voici un exemple qui utilise le TRUNC(number) fonction :

SELECT TRUNC(1.2573, 2)
FROM DUAL;

Résultat :

1.25

Le TRUNC() fonction tronque un nombre à une décimale donnée. Aucun arrondi ne se produit.