Dalam SQL, LPAD()
adalah fungsi yang umum digunakan yang melapisi bagian kiri string dengan karakter tertentu. Fungsi ini dapat digunakan pada string dan angka, meskipun tergantung pada DBMS, angka mungkin harus dilewatkan sebagai string sebelum dapat diisi.
DBMS yang memiliki LPAD()
fungsi termasuk MySQL, MariaDB, PostgreSQL, dan Oracle.
DBMS yang tidak memiliki LPAD()
fungsi termasuk SQL Server dan SQLite (walaupun ada cara lain untuk menerapkan padding kiri di DBMS ini).
Contoh
Berikut adalah contoh untuk mendemonstrasikan cara menggunakan LPAD()
dalam kode SQL Anda:
SELECT LPAD('Look Left', 20);
Hasil:
+-----------------------+ | LPAD('Look Left', 20) | +-----------------------+ | Look Left | +-----------------------+
Dalam contoh ini, bagian kiri string diisi dengan spasi (karakter pengisi default), dan string yang dihasilkan panjangnya 20 karakter (karena saya menetapkan 20
sebagai argumen kedua).
Oracle bekerja dengan cara yang sama, tetapi kita perlu menggunakan FROM DUAL
saat melakukan kueri seperti ini (tanpa menanyakan tabel yang sebenarnya):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Hasil:
LPAD('LOOKLEFT',20) _______________________ Look Left
Tentukan Karakter Padding
Padding tidak harus berupa ruang. Secara opsional, kita dapat menambahkan argumen ketiga untuk menentukan karakter (atau karakter) yang akan digunakan dalam padding.
SELECT LPAD('7', 3, '0');
Hasil:
007
Dalam hal ini saya mengisi angka dengan nol. Sebenarnya, saya memberikan nomor sebagai string dalam contoh ini.
Di beberapa DBMS (seperti MariaDB dan MySQL) kita dapat memberikan nomor sebagai nomor, serta nomor untuk diisi dengan:
SELECT LPAD(7, 3, 0);
Hasil:
007
Kami juga dapat melakukan ini di Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Hasil:
007
Tetapi PostgreSQL memiliki masalah dengan ini:
SELECT LPAD(7, 3, 0);
Hasil:
ERROR: function lpad(integer, integer, integer) does not exist
SQL Server
SQL Server tidak memiliki LPAD()
fungsi, tetapi memiliki FORMAT()
fungsi yang memungkinkan kita untuk memasukkan angka dengan angka nol di depan:
SELECT FORMAT(7, '000');
Hasil:
007
Cara kerjanya adalah kita melewati nomor, diikuti dengan string format. Pada contoh di atas, format string adalah 000
. Ini adalah string format numerik khusus yang menghasilkan nomor asli yang diisi sehingga hasilnya terdiri dari tiga digit. Jika belum ada tiga digit di nomor aslinya, maka diisi dengan nol.
Untuk meninggalkan string pad di SQL Server, kita dapat melakukan sesuatu seperti ini:
SELECT RIGHT('.......' + 'Cat', 7);
Hasil:
....Cat
Ada juga beberapa ekuivalen LPAD() lainnya di SQL Server.