Używając bazy danych Oracle do formatowania liczby tak, aby zawierała wiodące zera, musimy przekonwertować ją na ciąg i odpowiednio sformatować.
Możesz użyć TO_CHAR(number)
funkcja formatowania liczb z wiodącymi zerami.
I być może mniej znanym faktem jest to, że możesz również użyć LPAD()
funkcja dopełniania liczby wiodącymi zerami.
TO_CHAR()
Funkcja
Używając TO_CHAR(number)
funkcji, użyj 0
element formatu zawierający początkowe i/lub końcowe zera.
Przykład:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Wynik:
007
Oto porównanie z 9
element formatu:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Wynik:
9 0 ____ ______ 7 007
Liczba zer wiodących jest określona przez liczbę 0
elementy formatu i ilość cyfr w liczbie:
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;
Wynik:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
fm
modyfikator formatu pomija wszelkie początkowe i/lub końcowe dopełnienie, które może zostać uwzględnione w wyniku. Na przykład, gdy liczba jest ujemna, przedrostkiem jest znak minus. Ale gdy liczba jest dodatnia, nie uwzględnia się żadnego znaku i pojawia się spacja w miejscu, w którym znajdowałby się znak plus.
Oto przykład, który to zademonstruje:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Wynik:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
LPAD()
Funkcja
Alternatywnie możemy użyć LPAD()
funkcja formatowania liczb z wiodącymi zerami.
Przykład:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Wynik:
007
Inny przykład:
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;
Wynik:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
Jedna z zalet LPAD()
ma nad poprzednią metodą jest to, że możemy poprzedzić wynik innymi znakami – nie musi to być wiodące zero.
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;
Wynik:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777