Fungsi LPAD() Pada MySql
Halo teman-teman! Pada kesempatan kali ini, kita akan bahas salah satu fungsi string bawaan MySQL yang kerap dipakai untuk memformat data, yaitu LPAD(). Kalau kalian sudah cukup lama bermain-main dengan database, terutama MySQL, mungkin fungsi ini bukan hal yang asing lagi. Tapi buat yang baru pertama kali dengar, jangan khawatir, karena kita akan kupas tuntas mulai dari pengertian, cara kerja, hingga berbagai contoh penggunaan yang mungkin bisa kalian terapkan di proyek-proyek berikutnya. Tenang aja, bahasannya santai kok, jadi semoga mudah dicerna dan nggak bikin pusing!
Apa Itu LPAD() dalam MySQL?
Sebelum kita masuk ke contoh, ada baiknya kita kenal dulu apa sih LPAD() itu. LPAD adalah singkatan dari Left Pad—yaitu menambahkan suatu karakter (bisa huruf, angka, atau simbol) pada sisi kiri sebuah string sampai string tersebut mencapai panjang tertentu yang kita inginkan.
Secara sederhana, bayangkan kita punya string "123", dan kita mau string itu selalu berjumlah 5 karakter dengan menambahkan nol di depannya. Maka hasilnya akan menjadi "00123". Nah, untuk melakukan hal semacam itu, kita bisa pakai LPAD di MySQL. Fungsi ini berguna banget kalau kita perlu memformat data agar konsisten, misalnya untuk keperluan penomoran, pembuatan kode produk, atau sekadar menambahkan spasi tertentu di sebelah kiri string.
Sintaks Dasar LPAD
Nah, biar lebih jelas, berikut adalah sintaks dasar dari fungsi LPAD di MySQL:
LPAD(str, len, padstr)
- str: String asli yang ingin kita pad (tambahi karakter di kirinya).
- len: Panjang total string yang kita inginkan setelah proses penambahan karakter.
- padstr: Karakter atau kumpulan karakter yang ingin kita gunakan untuk mengisi bagian kiri.
Nah, kalau panjang string str
sudah mencapai atau melebihi len
, maka LPAD akan mengembalikan string asli tanpa diubah. Misalnya, kalau kita minta panjang 3 karakter tapi string aslinya 4 karakter, ya bakal tetap 4 karakter. Jadi, fungsi ini cuma bener-bener efektif kalau string kita belum mencapai panjang yang diinginkan.
Contoh sederhananya, kalau kita punya:
SELECT LPAD('abc', 5, 'x');
Maka hasilnya adalah 'xxabc'
. Kenapa? Karena kita butuh 5 karakter total, sementara str aslinya cuma punya 3 karakter. Berarti kita perlu 2 karakter tambahan di sisi kiri. Lalu, kita tambahin padstr 'x' sebanyak 2 kali. Jadilah 'xxabc'
.
Contoh Penerapan Sederhana
Biar makin paham, yuk lihat beberapa contoh dasar penggunaan LPAD sebelum kita melangkah ke studi kasus.
-
Menambahkan Spasi:
Kadang kita butuh merapikan teks agar selaras satu sama lain. Misal kita pengen punya total 10 karakter, dan menambahkan spasi di bagian kiri string.
String "Halo" panjangnya 4, berarti kita perlu 6 spasi tambahan di kiri agar total jadi 10 karakter.SELECT LPAD('Halo', 10, ' ') AS contoh1; -- Hasil: " Halo"
-
Menambahkan Nol:
Ini salah satu penggunaan yang paling umum. Menambahkan nol di awal string sering kita pakai buat menormalkan data numerik, misalnya nomor invoice, nomor urut, dan sebagainya.SELECT LPAD('123', 5, '0') AS contoh2; -- Hasil: "00123"
-
Menambahkan Karakter Khusus atau Huruf Lain:
Tidak harus selalu angka atau spasi, kita juga bisa pakai karakter lain seperti*
,-
, atau gabungan karakter.
Di sini, kita inginkan total panjang 7. StringSELECT LPAD('abc', 7, '*-') AS contoh3; -- Hasil: "*-*abc"
*-
dipakai untuk mengisi sisi kiri. Perlu diperhatikan kalau MySQL akan memotong bagian yang berlebihan jika padstr lebih panjang dari yang diperlukan.
Studi Kasus 1: Menambahkan Nol di Awal Nomor Urut
Salah satu alasan kenapa LPAD sering dipakai adalah untuk memformat nomor urut. Contohnya, kamu punya sebuah tabel bernama transaksi
yang punya kolom nomor
(menyimpan nomor transaksi). Mungkin di awalnya kamu membiarkan data nomor ini tidak selalu sama panjang, misal ada yang 1
, 12
, 123
, dan seterusnya. Tapi, sekarang kamu punya kebutuhan baru: semua nomor transaksi harus 5 digit. Misalnya, nomor 1 jadi 00001
, 12 jadi 00012
, dan 123 jadi 00123
.
Kalau kita mau menampilkan data di aplikasi atau mengekspor laporan, kita bisa memanfaatkan LPAD di query kita. Contoh:
SELECT
LPAD(nomor, 5, '0') AS nomor_berformat,
nama_pelanggan,
tanggal_transaksi
FROM transaksi;
Dengan query di atas, kolom nomor_berformat
yang muncul di hasil query akan menampilkan nomor transaksi versi "dirapikan". Kalau kolom nomor
aslinya 1, maka hasilnya 00001. Kalau aslinya 99999, ya tetap 99999 karena sudah 5 digit.
Jika kita mau meng-update data di tabel sehingga kolom nomor
benar-benar tersimpan dalam format 5 digit, kita perlu hati-hati. Biasanya lebih baik kolom nomor
disimpan apa adanya (sebagai integer) dan baru diformat saat penampilan. Tapi kalau kamu memang pengen benar-benar mengubah datanya, bisa coba query seperti:
UPDATE transaksi
SET nomor = LPAD(nomor, 5, '0');
Tentu pastikan dulu tipe data kolomnya adalah VARCHAR
, karena kalau masih INT
, penambahan nol di depan nggak ada artinya.
Studi Kasus 2: Format Kode Produk
Katakanlah kamu punya sebuah tabel produk
dengan kolom kode_produk
yang berisi data alfanumerik. Mungkin awalnya kodenya hanya "P1", "P2", hingga "P100". Suatu hari, tim marketing pengen semua kode produk punya panjang 8 karakter dengan awalan "P". Jadi kalau kodenya "P1", harus tampil sebagai "P0000001". Kalau "P123" tampil jadi "P0000123", dan seterusnya.
Kita bisa memanfaatkan LPAD untuk menambahkan nol setelah huruf "P". Langkahnya mungkin seperti ini: kita potong dulu "P" di bagian depan, lalu tambahkan nol di kiri sisanya, terus gabungkan lagi dengan "P". Terdengar ribet? Tenang, ada cara gampangnya:
SELECT
CONCAT('P', LPAD(SUBSTR(kode_produk, 2), 7, '0')) AS kode_berformat
FROM produk;
Penjelasannya:
SUBSTR(kode_produk, 2)
mengambil substring dari karakter kedua kode, sehingga "P123" menjadi "123" atau "P1" menjadi "1".- Kita lalu menambahkan nol di kiri hingga panjangnya jadi 7, menghasilkan "0000123" misalnya.
- Kemudian kita gabungkan kembali (pakai
CONCAT
) dengan huruf "P" di depan. Hasilnya "P0000123".
Kalau ternyata kita punya kode produk yang belum diawali "P" sama sekali, tentu perlu logika tambahan. Tapi kalau struktur datanya selalu diawali "P", trik ini bisa langsung dipakai.
Studi Kasus 3: Format Tanggal dan Waktu
Sering juga LPAD dimanfaatkan untuk keperluan format tanggal atau waktu. Misalnya, kita punya kolom jam
yang hanya menyimpan jam dalam bentuk integer (0 hingga 23). Mungkin saat menampilkan data, kita pengen selalu ada dua digit. Jadi jam 0
jadi "00", jam 7
jadi "07", dan jam 12
jadi "12".
Kita bisa melakukannya dengan mudah begini:
SELECT
LPAD(jam, 2, '0') AS jam_duadigit,
nama_event
FROM jadwal_event;
Hasilnya, kolom jam_duadigit
akan menampilkan nilai jam dengan dua digit. Buat menampilkan format jam lengkap seperti "HH:MM:SS", tentu kita perlu gabungkan dengan data menit dan detik, atau bisa jadi kolom lain. Tapi prinsipnya sama: kita sering perlu menambahkan nol di depan jika angkanya kurang dari 10.
Perhatikan Karakter Khusus di Kolom Database
Sekadar pengingat, kalau data di kolom aslinya mengandung karakter spesial seperti \
atau '
, kita perlu hati-hati dengan escaping. Tergantung kasusnya, mungkin kita perlu memastikan data di kolom sudah benar-benar bersih sebelum kita tambahkan pad. Tapi secara umum, LPAD hanya menambahkan karakter di sisi kiri, jadi tidak mengubah isi string selain menambahkannya di depan.
Bagaimana Kalau padstr Lebih Panjang dari yang Dibutuhkan?
Pertanyaan umum lain adalah: "Gimana kalau padstr yang kita pakai lebih panjang dari selisih yang dibutuhkan untuk mencapai len
?" Misal, kita punya:
SELECT LPAD('xyz', 10, 'abcdef');
Disini, str
kita adalah "xyz" (3 karakter), kita ingin total panjang 10, dan kita pakai padstr "abcdef" (6 karakter). Nah, kita butuh 7 karakter tambahan di depan. Yang terjadi adalah MySQL akan mengisi kiri string "xyz" dengan 6 karakter pertama dari padstr, lalu karena butuh 1 karakter lagi, akan diambil karakter pertama dari padstr lagi.
Artinya, MySQL akan mengulangi atau memotong padstr sesuai kebutuhan. Hasilnya kurang lebih jadi "abcdefaxyz" (total 10 karakter). Jangan kaget kalau tiba-tiba string di kiri kepotong atau diulang. Memang begitu cara kerjanya.
Jadi kuncinya adalah kita pastikan panjang padstr sebaiknya 1 karakter atau paling tidak jangan jauh lebih panjang daripada selisih len - LENGTH(str)
. Dengan begitu, kita bisa lebih mengontrol hasil format string yang diinginkan.
Penggunaan LPAD() dengan Fungsi-Fungsi Lain
Di MySQL, kita sering mengombinasikan beberapa fungsi string sekaligus untuk mendapatkan hasil yang lebih kompleks. Contohnya, kita bisa melakukan:
SELECT
LPAD(UPPER(nama), 10, '*') AS nama_bintang
FROM karyawan;
Di sini, sebelum nama dipasangkan LPAD, kita ubah dulu nama menjadi huruf kapital pake UPPER()
. Habis itu, baru kita tambahin *
di sisi kirinya sampai total 10 karakter. Hasilnya misal "Joko" jadi "******JOKO" (kalau "Joko" cuma 4 karakter, maka kita perlu 6 *
di depan).
Kita juga bisa pakai CONCAT()
buat menggabungkan beberapa string setelah di-pad. Misalnya, kalau mau menampilkan nama dan gelar dengan format tertentu:
SELECT
CONCAT(LPAD(nama_depan, 10, '.'), ' ', LPAD(nama_belakang, 10, '.')) AS nama_lengkap
FROM karyawan;
Hasilnya bakal jadi semacam menampilkan nama_depan
dengan 10 karakter, disisipi titik di kiri kalau kurang panjang, lalu spasi, lalu nama_belakang
dengan prinsip yang sama. Tentu saja ini bisa jadi agak aneh kalau kebanyakan titik, tapi setidaknya kita paham bahwa LPAD bisa dikombinasikan dengan fungsi lainnya sesuai kebutuhan.
Mengatasi Masalah Kinerja
Satu hal yang kadang dikhawatirkan adalah kinerja (performance). Kalau kita punya tabel raksasa dengan jutaan baris, lalu tiap kali kita menampilkan data kita pakai LPAD, apakah akan terasa lambat?
Sebenernya, LPAD bukanlah fungsi yang sangat berat, tapi string manipulation pada jumlah data yang sangat besar bisa juga bikin query berjalan lebih lambat dibanding kalau kita tidak memakainya. Namun, seringkali perbedaan itu masih wajar dan tetap acceptable. Apalagi jika kita punya indeks untuk kolom lain yang dipakai di WHERE
-clause.
Kalau kita butuh kinerja maksimal dan sering memformat string, mungkin kita bisa menyimpan data yang sudah ter-format di kolom terpisah. Tapi itu pun harus dipertimbangkan dengan baik, karena bisa muncul permasalahan data yang "redundan" alias dua kolom menyimpan informasi yang sebetulnya sama. Intinya, perlu diseimbangkan antara kebutuhan format data dan efisiensi penyimpanan maupun performa query.
Tips dan Trik Lain
-
Pastikan Tipe Data Sesuai:
Kalau kamu berencana menambahkan nol di depan angka, pastikan kolomnya tidak berjenisINT
, karena nol di depan nggak akan terlihat. Pakai jenisVARCHAR
atauCHAR
. -
Gunakan Bersama RIGHT() dan LEFT() Jika Perlu:
Terkadang kita mau mengambil hanya sebagian string, lalu menambahkan karakter. Di sinilahRIGHT()
atauLEFT()
bisa dipakai barengan LPAD. Contohnya,
LPAD(RIGHT(kode_produk, 4), 6, '0')
buat mengambil 4 karakter terakhir lalu menambahkan dua nol di depannya. -
Jangan Lupa Testing:
Setiap kali kita memanipulasi string, selalu coba beberapa sampel data supaya nggak ada kejutan. Mungkin aja panjang string melebihilen
, atau padstr terlalu panjang, atau data kosong (NULL
). -
NULL Handling:
Kalau kolom kita ada yang kosong (NULL
), LPAD akan mengembalikanNULL
juga. Perlu diantisipasi jika kita ingin menampilkannya sebagai string tertentu. Bisa diakali denganCOALESCE()
untuk mengubahNULL
menjadi string kosong terlebih dahulu.
Pada dasarnya, LPAD() adalah fungsi sederhana namun sangat berguna dalam berbagai situasi yang membutuhkan format string konsisten. Mulai dari menambahkan nol di awal nomor, memformat kode produk, sampai menata tampilan teks biar terlihat lebih rapi dan selaras. Kelebihan utamanya adalah kemudahannya dalam digunakan. Cukup panggil LPAD(str, len, padstr)
dan kita bisa secara instan menambahkan karakter pada sisi kiri string sesuai yang kita butuhkan.
Meski seringnya LPAD dipakai untuk menambahkan nol, sebenarnya kita bisa memasukkan karakter apa pun yang kita mau, bahkan string yang lebih panjang. Perlu diingat juga bahwa MySQL akan memotong atau mengulangi padstr kalau panjangnya lebih dari jumlah yang dibutuhkan. Jadi, sebaiknya kita rencanakan dan sesuaikan padstr dengan kebutuhan supaya hasilnya tidak berantakan.
Dari segi performa, LPAD cenderung tidak terlalu memberatkan, terutama dalam skala data yang tidak terlalu masif. Kalau kita berhadapan dengan jutaan baris dan manipulasi string kompleks, ada baiknya kita melakukan benchmark dan optimasi lebih lanjut. Namun secara umum, fungsi ini aman dipakai dan cukup efisien buat sebagian besar skenario.
Semoga artikel kali ini membantu kalian dalam memahami fungsi LPAD di MySQL dengan lebih dalam. Jangan lupa untuk selalu bereksperimen dan menyesuaikan dengan kebutuhan spesifik proyek masing-masing. Toh, cara terbaik untuk memahami fungsi-fungsi string semacam ini adalah dengan langsung mempraktikkannya di database, coba-coba dengan berbagai contoh, dan perhatikan hasilnya di console MySQL atau tool favorit kalian (seperti phpMyAdmin, Adminer, MySQL Workbench, dan lain-lain).
Sekian dulu pembahasan kita tentang LPAD. Kalau masih bingung atau ada pertanyaan lain, jangan ragu buat nanya di kolom komentar (jika ada), atau diskusikan bareng rekan kerja. Selamat mencoba dan semoga sukses dalam memformat data sesuai kebutuhan! Sampai jumpa di artikel selanjutnya!
Baca Juga :