Når vi bruger Oracle Database til at formatere et tal til at have foranstillede nuller, skal vi konvertere det til en streng og formatere det i overensstemmelse hermed.
Du kan bruge TO_CHAR(number)
funktion til at formatere tal med foranstillede nuller.
Og måske et mindre kendt faktum er, at du også kan bruge LPAD()
funktion til at udfylde et tal med indledende nuller.
TO_CHAR()
Funktion
Når du bruger TO_CHAR(number)
funktion, skal du bruge 0
formatelement for at inkludere foranstillede og/eller efterfølgende nuller.
Eksempel:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Resultat:
007
Her er den sammenlignet med 9
formatelement:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Resultat:
9 0 ____ ______ 7 007
Antallet af foranstillede nuller bestemmes af antallet af 0
formatelementer og antallet af cifre i tallet:
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;
Resultat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
fm
formatmodifikator undertrykker enhver førende og/eller efterfølgende polstring, der kan være inkluderet i resultatet. For eksempel, når tallet er negativt, er et minustegn foran. Men når tallet er positivt, er der intet tegn med, og der vises et mellemrum, hvor plustegnet ville have været.
Her er et eksempel til at demonstrere dette:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Resultat:
Minustegn polstret Ikke polstret _____________ _________ _____________ -007 007 007
LPAD()
Funktion
Vi kan alternativt bruge LPAD()
funktion til at formatere tal med foranstillede nuller.
Eksempel:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Resultat:
007
Et andet eksempel:
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;
Resultat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
En af fordelene ved LPAD()
har i forhold til den tidligere metode er, at vi kan præfikse resultatet andre tegn - det behøver ikke at være et foranstillet nul.
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;
Resultat:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777