Khi sử dụng Cơ sở dữ liệu Oracle để định dạng một số có các số 0 ở đầu, chúng ta cần chuyển đổi nó thành một chuỗi và định dạng nó cho phù hợp.
Bạn có thể sử dụng TO_CHAR(number)
hàm để định dạng các số với các số không ở đầu.
Và có lẽ một thực tế ít được biết đến hơn, là bạn cũng có thể sử dụng LPAD()
hàm để đệm một số bằng các số 0 ở đầu.
TO_CHAR()
Chức năng
Khi sử dụng TO_CHAR(number)
, sử dụng 0
phần tử định dạng để bao gồm các số không ở đầu và / hoặc ở cuối.
Ví dụ:
SELECT TO_CHAR(7, 'fm000')
FROM DUAL;
Kết quả:
007
Đây là khi so sánh với 9
phần tử định dạng:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;
Kết quả:
9 0 ____ ______ 7 007
Số lượng các số 0 ở đầu được xác định bởi số lượng 0
các phần tử định dạng và số chữ số trong số:
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;
Kết quả:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ ## 00077 00777 07777 77777
fm
công cụ sửa đổi định dạng loại bỏ bất kỳ phần đệm ở đầu và / hoặc ở cuối có thể được đưa vào kết quả. Ví dụ, khi số âm, dấu trừ được đặt trước. Nhưng khi số là số dương, không có dấu nào được bao gồm và một khoảng trắng sẽ xuất hiện ở vị trí mà dấu cộng sẽ ở đó.
Dưới đây là một ví dụ để chứng minh điều này:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;
Kết quả:
Minus Sign Padded Not Padded _____________ _________ _____________ -007 007 007
LPAD()
Chức năng
Ngoài ra, chúng ta có thể sử dụng LPAD()
hàm để định dạng các số với các số không ở đầu.
Ví dụ:
SELECT LPAD(7, 3, '0')
FROM DUAL;
Kết quả:
007
Một ví dụ khác:
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;
Kết quả:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 00077 00777 07777 77777
Một trong những lợi ích mà LPAD()
hơn phương pháp trước đó là chúng ta có thể đặt trước kết quả các ký tự khác - nó không cần phải là số 0 ở đầu.
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;
Kết quả:
r1 r2 r3 r4 r5 _____ ________ ________ ________ ________ 7 ...77 ..777 .7777 77777