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