sql >> Databasteknik >  >> RDS >> Oracle

2 sätt att formatera ett tal med ledande nollor i Oracle

När vi använder Oracle Database för att formatera ett tal så att det har inledande nollor, måste vi konvertera det till en sträng och formatera det därefter.

Du kan använda TO_CHAR(number) funktion för att formatera tal med inledande nollor.

Och kanske ett mindre känt faktum är att du också kan använda LPAD() funktion för att fylla ett tal med inledande nollor.

TO_CHAR() Funktion

När du använder TO_CHAR(number) funktionen, använd 0 formatelement för att inkludera inledande och/eller avslutande nollor.

Exempel:

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Resultat:

007

Här är den jämfört med 9 formatelement:

SELECT 
    TO_CHAR(7, 'fm999') AS "9",
    TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;

Resultat:

   9      0 
____ ______ 
7    007   

Antalet inledande nollor bestäms av antalet 0 formatelement och antalet siffror i numret:

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 formatmodifierare undertrycker all inledande och/eller efterföljande utfyllnad som kan inkluderas i resultatet. Till exempel, när siffran är negativ, kommer ett minustecken före. Men när siffran är positiv ingår inget tecken, och ett mellanslag visas där plustecknet skulle ha varit.

Här är ett exempel som visar detta:

SELECT 
    TO_CHAR(-7, '000') AS "Minus Sign",
    TO_CHAR(7, '000') AS "Padded",
    TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;

Resultat:

   Minus Sign    Padded    Not Padded 
_____________ _________ _____________ 
-007           007      007          

LPAD() Funktion

Vi kan alternativt använda LPAD() funktion för att formatera tal med inledande nollor.

Exempel:

SELECT LPAD(7, 3, '0')
FROM DUAL;

Resultat:

007

Ett annat exempel:

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 av fördelarna med LPAD() har över den tidigare metoden är att vi kan prefixa resultatet till andra tecken – det behöver inte vara en inledande nolla.

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. Hur fixar man vanliga problem med MySQL-databasen?

  2. En översikt över volymnivåreplikering för PostgreSQL med DRBD

  3. Kan %NOTFOUND returnera null efter en hämtning?

  4. Vad är ett databasschema?