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

4 façons de formater un nombre sans 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. Cela vous permet de formater le nombre pour avoir un nombre spécifique de décimales - y compris aucune décimale, si c'est ce que vous voulez.

Vous pouvez également utiliser des fonctions comme ROUND(number) et TRUNC(number) pour arrondir ou tronquer le nombre sans décimales.

Il y a aussi le CAST() fonction qui vous permet de convertir un type de données en entier, ce qui supprime efficacement toutes les décimales.

Le TO_CHAR() Fonction

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

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Résultat :

1,235

Dans ce cas, mon modèle de format se compose de :

  • un fm , qui est un modificateur de format qui supprime tous les caractères de remplissage de début et/ou de fin qui pourraient être ajoutés au résultat.
  • plusieurs 9 caractères, qui représentent chaque chiffre
  • un G caractère, qui représente un séparateur de groupe compatible avec les paramètres régionaux

La chose importante à noter est qu'il n'utilise pas le D élément de format, qui est le caractère décimal compatible avec le format. Il n'utilise pas non plus de caractères décimaux littéraux (comme une virgule ou un point). Et parce qu'il n'a pas de caractères décimaux, il n'y a évidemment pas de chiffres après un tel caractère.

Si nous l'avons fait avoir un caractère décimal, n'importe quel 9 ou 0 les éléments à sa droite peuvent entraîner l'inclusion de décimales dans le résultat.

Exemple :

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

Résultat :

7.00

Pour supprimer les zéros de fin, nous pouvons changer le 0 caractères à 9 s. Cependant, en supprimant le fm le modificateur peut entraîner l'apparition de zéros à la fin même lors de l'utilisation du 9 élément de format.

Voici une comparaison pour illustrer ce que je veux dire :

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

Résultat :

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

Le ROUND() Fonction

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

SELECT ROUND(1234.56, 0)
FROM DUAL;

Résultat :

1235

Le ROUND() La fonction arrondit un nombre à une décimale donnée. Ici, nous avons spécifié zéro décimale, ce qui supprime toutes les décimales du nombre.

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

Le TRUNC() Fonction

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

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Résultat :

1234

Le TRUNC() fonction tronque un nombre à une décimale donnée. Aucun arrondi ne se produit. Par conséquent, ce nombre a été tronqué à zéro décimale, sans arrondi.

Le CAST() Fonction

Voici un exemple qui utilise le CAST() fonction :

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Résultat :

1235

Le CAST() La fonction convertit son argument en un type de données différent. Dans ce cas, nous avons converti le nombre en entier. Les nombres entiers n'ont pas de décimales, et donc toutes les parties fractionnaires sont supprimées du résultat (y compris le caractère décimal). Notez que le résultat a été arrondi.