Als we Oracle Database gebruiken om een getal op te maken met voorloopnullen, moeten we het converteren naar een tekenreeks en het dienovereenkomstig opmaken.
U kunt de TO_CHAR(number)
. gebruiken functie om getallen op te maken met voorloopnullen.
En misschien een minder bekend feit, is dat je ook de LPAD()
. kunt gebruiken functie om een getal met voorloopnullen op te vullen.
De TO_CHAR()
Functie
Bij gebruik van het TO_CHAR(number)
functie, gebruik de 0
format-element om voorloop- en/of volgnullen op te nemen.
Voorbeeld:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Resultaat:
007
Hier is het vergeleken met de 9
formaatelement:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Resultaat:
9 0 ____ ______ 7 007
Het aantal voorloopnullen wordt bepaald door het aantal 0
formaatelementen en het aantal cijfers in het getal:
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;
Resultaat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
De fm
format modifier onderdrukt alle voorloop- en/of volgopvulling die mogelijk in het resultaat is opgenomen. Als het getal bijvoorbeeld negatief is, wordt een minteken voorafgegaan. Maar als het getal positief is, wordt er geen teken opgenomen en verschijnt er een spatie waar het plusteken zou hebben gestaan.
Hier is een voorbeeld om dit aan te tonen:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Resultaat:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
De LPAD()
Functie
We kunnen ook de LPAD()
. gebruiken functie om getallen op te maken met voorloopnullen.
Voorbeeld:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Resultaat:
007
Nog een voorbeeld:
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;
Resultaat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
Een van de voordelen die LPAD()
heeft ten opzichte van de vorige methode, is dat we het resultaat van andere tekens kunnen voorvoegen - het hoeft geen voorloopnul te zijn.
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;
Resultaat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777