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

2 modi per formattare un numero con zeri iniziali in Oracle

Quando si utilizza Oracle Database per formattare un numero in modo che abbia zeri iniziali, è necessario convertirlo in una stringa e formattarlo di conseguenza.

Puoi usare il TO_CHAR(number) funzione per formattare i numeri con zeri iniziali.

E forse un fatto meno noto è che puoi anche usare LPAD() funzione per riempire un numero con zeri iniziali.

Il TO_CHAR() Funzione

Quando si utilizza il TO_CHAR(number) funzione, utilizzare il 0 format per includere zeri iniziali e/o finali.

Esempio:

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

Risultato:

007

Eccolo se confrontato con il 9 elemento di formato:

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

Risultato:

   9      0 
____ ______ 
7    007   

Il numero di zeri iniziali è determinato dal numero di 0 elementi di formato e il numero di cifre nel numero:

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;

Risultato:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
##    00077    00777    07777    77777   

Il fm il modificatore di formato sopprime qualsiasi riempimento iniziale e/o finale che potrebbe essere incluso nel risultato. Ad esempio, quando il numero è negativo, viene preceduto un segno meno. Ma quando il numero è positivo, non viene incluso alcun segno e appare uno spazio dove sarebbe stato il segno più.

Ecco un esempio per dimostrarlo:

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

Risultato:

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

Il LPAD() Funzione

In alternativa possiamo usare il LPAD() funzione per formattare i numeri con zeri iniziali.

Esempio:

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

Risultato:

007

Un altro esempio:

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;

Risultato:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     00077    00777    07777    77777   

Uno dei vantaggi che LPAD() rispetto al metodo precedente è che possiamo anteporre al risultato altri caratteri:non è necessario che sia uno zero iniziale.

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;

Risultato:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     ...77    ..777    .7777    77777