Když používáme Oracle Database k formátování čísla tak, aby mělo úvodní nuly, musíme ho převést na řetězec a podle toho ho naformátovat.
Můžete použít TO_CHAR(number)
funkce pro formátování čísel s úvodními nulami.
A možná méně známým faktem je, že můžete také použít LPAD()
funkce pro doplnění čísla úvodními nulami.
TO_CHAR()
Funkce
Při použití TO_CHAR(number)
použijte 0
formátovací prvek tak, aby obsahoval úvodní a/nebo koncové nuly.
Příklad:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Výsledek:
007
Tady to je ve srovnání s 9
prvek formátu:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Výsledek:
9 0 ____ ______ 7 007
Počet úvodních nul je určen číslem 0
prvky formátu a počet číslic v čísle:
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;
Výsledek:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
fm
Modifikátor formátu potlačuje veškeré počáteční a/nebo koncové odsazení, které by mohlo být zahrnuto ve výsledku. Například, když je číslo záporné, je předponou znaménko mínus. Ale když je číslo kladné, není zahrnuto žádné znaménko a na místě, kde by bylo znaménko plus, se objeví mezera.
Zde je příklad, který to demonstruje:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Výsledek:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
LPAD()
Funkce
Alternativně můžeme použít LPAD()
funkce pro formátování čísel s úvodními nulami.
Příklad:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Výsledek:
007
Další příklad:
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;
Výsledek:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
Jedna z výhod, kterou LPAD()
oproti předchozí metodě je to, že před výsledkem můžeme uvést další znaky – nemusí to být úvodní nula.
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;
Výsledek:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777