Trong PostgreSQL, chúng ta có thể sử dụng TO_CHAR()
hàm để thêm các số không ở đầu vào một số. Hàm chuyển đổi số thành chuỗi, sử dụng định dạng (tùy chọn) mà chúng tôi chỉ định.
Một tùy chọn khác là 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()
, 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');
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";
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";
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";
Kết quả:
Dấu trừ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 để đệm các số bằng các số 0 ở đầu:
SELECT LPAD('7', 3, '0');
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";
Kết quả:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777
Lưu ý rằng hàm này yêu cầu số được truyền dưới dạng một chuỗi. Do đó, trước tiên chúng ta cần chuyển số thành chuỗi. Ký tự đệm cũng cần phải là một chuỗi.
Vì vậy, chúng tôi có thể phải làm một cái gì đó như sau:
SELECT LPAD(CAST(7 AS varchar), 3, '0');
Kết quả:
007
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";
Kết quả:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777