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

2 façons de formater un nombre avec des zéros non significatifs dans Oracle

Lorsque vous utilisez Oracle Database pour formater un nombre avec des zéros non significatifs, nous devons le convertir en chaîne et le formater en conséquence.

Vous pouvez utiliser le TO_CHAR(number) fonction pour formater les nombres avec des zéros non significatifs.

Et peut-être un fait moins connu, c'est que vous pouvez aussi utiliser le LPAD() fonction pour remplir un nombre avec des zéros non significatifs.

Le TO_CHAR() Fonction

Lors de l'utilisation de le TO_CHAR(number) fonction, utilisez le 0 élément de format pour inclure des zéros de début et/ou de fin.

Exemple :

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

Résultat :

007

Le voici par rapport au 9 élément de format :

SELECT 
    TO_CHAR(7, 'fm999') AS "9",
    TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;

Résultat :

   9      0 
____ ______ 
7    007   

Le nombre de zéros non significatifs est déterminé par le nombre de 0 éléments de format et le nombre de chiffres dans le nombre :

SELECT 
    TO_CHAR(77, 'fm0') AS "r1",
    TO_CHAR(77, 'fm00000') AS "r2",
    TO_CHAR(777, 'fm00000') AS "r3",
    TO_CHAR(7777, 'fm00000') AS "r4",
    TO_CHAR(77777, 'fm00000') AS "r5"
FROM DUAL;

Résultat :

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
##    00077    00777    07777    77777   

Le fm Le modificateur de format supprime tout rembourrage de début et/ou de fin qui pourrait être inclus dans le résultat. Par exemple, lorsque le nombre est négatif, un signe moins est préfixé. Mais lorsque le nombre est positif, aucun signe n'est inclus et un espace apparaît à la place du signe plus.

Voici un exemple pour illustrer cela :

SELECT 
    TO_CHAR(-7, '000') AS "Minus Sign",
    TO_CHAR(7, '000') AS "Padded",
    TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;

Résultat :

   Minus Sign    Padded    Not Padded 
_____________ _________ _____________ 
-007           007      007          

Le LPAD() Fonction

Nous pouvons alternativement utiliser le LPAD() fonction pour formater les nombres avec des zéros non significatifs.

Exemple :

SELECT LPAD(7, 3, '0')
FROM DUAL;

Résultat :

007

Autre exemple :

SELECT 
    LPAD(77, 1, '0') AS "r1",
    LPAD(77, 5, '0') AS "r2",
    LPAD(777, 5, '0') AS "r3",
    LPAD(7777, 5, '0') AS "r4",
    LPAD(77777, 5, '0') AS "r5"
FROM DUAL;

Résultat :

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     00077    00777    07777    77777   

L'un des avantages que LPAD() a sur la méthode précédente est que nous pouvons préfixer le résultat d'autres caractères - il n'a pas besoin d'être un zéro non significatif.

SELECT 
    LPAD(77, 1, '.') AS "r1",
    LPAD(77, 5, '.') AS "r2",
    LPAD(777, 5, '.') AS "r3",
    LPAD(7777, 5, '.') AS "r4",
    LPAD(77777, 5, '.') AS "r5"
FROM DUAL;

Résultat :

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     ...77    ..777    .7777    77777