sql >> Database teknologi >  >> RDS >> Oracle

2 måder at formatere et tal med førende nuller i Oracle

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 

  1. Hvad er de 6 hovedkomponenter i Microsoft Access?

  2. Sådan beregnes procent i PostgreSQL

  3. Oracle underforespørgsel kan ikke se variablen fra den ydre blok 2 niveauer og op

  4. Hvordan finder jeg databiblioteket for en SQL Server-instans?