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