Di PostgreSQL, kita dapat menggunakan TO_CHAR()
berfungsi untuk menambahkan angka nol di depan suatu bilangan. Fungsi mengonversi angka menjadi string, menggunakan format (opsional) yang kami tentukan.
Pilihan lainnya adalah dengan menggunakan LPAD()
berfungsi untuk mengisi angka dengan nol di depan.
TO_CHAR()
Fungsi
Saat menggunakan TO_CHAR()
fungsi, gunakan 0
elemen format untuk menyertakan nol di depan dan/atau di belakang.
Contoh:
SELECT TO_CHAR(7, 'fm000');
Hasil:
007
Ini dia jika dibandingkan dengan 9
elemen format:
SELECT
TO_CHAR(7, 'fm999') AS "9",
TO_CHAR(7, 'fm000') AS "0";
Hasil:
9 | 0 ---+----- 7 | 007
Jumlah nol di depan ditentukan oleh jumlah 0
elemen format dan jumlah digit angka:
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";
Hasil:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- # | 00077 | 00777 | 07777 | 77777
fm
pengubah format menekan setiap padding awal dan/atau akhir yang mungkin disertakan dalam hasil. Misalnya, ketika angkanya negatif, tanda minus diawali. Tetapi ketika angkanya positif, tidak ada tanda yang disertakan, dan sebuah spasi muncul di mana tanda plus seharusnya berada.
Berikut ini contoh untuk menunjukkannya:
SELECT
TO_CHAR(-7, '000') AS "Minus Sign",
TO_CHAR(7, '000') AS "Padded",
TO_CHAR(7, 'fm000') AS "Not Padded";
Hasil:
Minus Sign | Padded | Not Padded ------------+--------+------------ -007 | 007 | 007
LPAD()
Fungsi
Sebagai alternatif, kita dapat menggunakan LPAD()
berfungsi untuk mengisi angka dengan angka nol di depan:
SELECT LPAD('7', 3, '0');
Hasil:
007
Contoh lain:
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";
Hasil:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | 00077 | 00777 | 07777 | 77777
Perhatikan bahwa fungsi ini mengharuskan nomor dilewatkan sebagai string. Oleh karena itu, kita perlu mengonversi angka menjadi string terlebih dahulu. Karakter pengisi juga harus berupa string.
Jadi kita mungkin harus melakukan sesuatu seperti ini:
SELECT LPAD(CAST(7 AS varchar), 3, '0');
Hasil:
007
Salah satu manfaat yang LPAD()
memiliki lebih dari metode sebelumnya adalah bahwa kita dapat mengawali hasil karakter lain – tidak perlu menjadi nol di depan.
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";
Hasil:
r1 | r2 | r3 | r4 | r5 ----+-------+-------+-------+------- 7 | ...77 | ..777 | .7777 | 77777