1. Apa itu fungsi SUBSTRING
?
Fungsi SUBSTRING
adalah salah satu fungsi penting di MySQL yang digunakan untuk mengekstrak bagian tertentu dari sebuah string. Dengan fungsi ini, Anda bisa mengambil hanya bagian yang diperlukan dari data dalam database. Misalnya, mengekstrak domain dari alamat email pengguna, atau mengambil bagian tertentu dari kode produk.
1.1 Sintaks dasar
Sintaks dasar dari fungsi SUBSTRING
adalah sebagai berikut:
SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
str
: String yang akan diekstrak.pos
: Posisi mulai ekstraksi (dimulai dari 1).len
: Jumlah karakter yang diekstrak (opsional).
Jika pos
bernilai positif, perhitungan dimulai dari awal string. Jika bernilai negatif, perhitungan dimulai dari akhir string. Jika len
diabaikan, maka hasilnya adalah seluruh bagian string dari posisi yang ditentukan hingga akhir.
1.2 Kegunaan fungsi SUBSTRING
Fungsi ini digunakan untuk memformat data string atau mengekstrak bagian tertentu, sehingga mempermudah pencarian informasi dan pengolahan data di dalam database.
2. Cara penggunaan dasar fungsi SUBSTRING
Mari kita lihat contoh sederhana untuk memahami cara penggunaannya.
2.1 Mengekstrak sebagian string
Kueri berikut mengekstrak 6 karakter mulai dari karakter ke-3 pada string “Hello, World!”.
SELECT SUBSTRING('Hello, World!', 3, 6);
Hasilnya adalah "llo, W"
. Karena pos
= 3, maka ekstraksi dimulai dari karakter ketiga, dan len
= 6 sehingga menghasilkan 6 karakter.
2.2 Mengabaikan jumlah karakter
Jika len
tidak ditentukan, maka ekstraksi berlangsung dari posisi awal yang ditentukan hingga akhir string.
SELECT SUBSTRING('Hello, World!', 8);
Hasilnya adalah "World!"
, yaitu mulai dari karakter ke-8 hingga akhir string.
2.3 Menggunakan posisi negatif
Jika menggunakan nilai negatif, posisi dihitung dari akhir string.
SELECT SUBSTRING('Hello, World!', -5);
Kueri ini mengembalikan "orld!"
, yaitu 5 karakter terakhir dari string.
3. Penerapan praktis fungsi SUBSTRING
Fungsi SUBSTRING
sering digunakan dalam manipulasi data nyata. Berikut beberapa contoh penerapannya.
3.1 Mengekstrak domain dari alamat email
Dengan menggabungkan SUBSTRING
dan LOCATE
, Anda bisa mengekstrak bagian domain dari alamat email.
SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;
Kueri ini mengambil string setelah tanda “@” dan menampilkannya sebagai domain.
3.2 Mengambil bagian dari kode produk
Contoh untuk mengekstrak sebagian dari kode produk:
SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;
Kueri ini mengambil 4 karakter mulai dari posisi ke-5 pada kode produk, lalu menampilkannya sebagai kolom product_id
.
3.3 Penggunaan dalam subquery
Anda juga bisa menggunakannya dalam subquery untuk kondisi lebih kompleks.
SELECT id, SUBSTRING(description, 1, 10) AS short_desc
FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;
Kueri ini mengambil 10 karakter pertama dari kolom description
untuk produk dengan kategori ‘Electronics’.
4. Perbandingan dengan fungsi string lainnya
Ada fungsi lain dengan tujuan serupa, seperti LEFT
, RIGHT
, dan SUBSTR
.
4.1 Fungsi LEFT
dan RIGHT
LEFT(str, len)
: Mengambil sejumlah karakter dari awal string.RIGHT(str, len)
: Mengambil sejumlah karakter dari akhir string.
SELECT LEFT('Hello, World!', 5); -- "Hello"
SELECT RIGHT('Hello, World!', 6); -- "World!"
Fungsi ini berguna untuk ekstraksi bagian string dari awal atau akhir.
4.2 Fungsi SUBSTR
SUBSTR
adalah alias dari SUBSTRING
dan dapat digunakan dengan cara yang sama.
SELECT SUBSTR('Hello, World!', 8); -- "World!"
Hasilnya sama dengan menggunakan SUBSTRING
.
5. Penerapan lanjutan dan optimasi
Berikut adalah beberapa tips untuk penggunaan lanjutan dan optimasi performa.
5.1 Optimasi performa
Menggunakan SUBSTRING
pada dataset besar bisa mempengaruhi performa. Pastikan indeks digunakan dengan benar dan periksa rencana eksekusi kueri. Jika sering mengekstrak bagian yang sama, pertimbangkan untuk menyimpannya dalam kolom tambahan atau menggunakan caching.
5.2 Penggunaan dalam WHERE clause
Anda dapat menggunakan SUBSTRING
dalam WHERE
clause untuk pencarian berdasarkan bagian dari string.
SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';
Kueri ini mencari produk yang kode produknya diawali dengan “ABC”.
6. Contoh penggunaan dan best practice
Berikut adalah contoh praktis penggunaan fungsi SUBSTRING
beserta best practice yang disarankan.
6.1 Contoh kode
Contoh berikut membagi nama pelanggan menjadi nama depan dan nama belakang.
SELECT name, SUBSTRING(name, 1, LOCATE(' ', name) - 1) AS first_name,
SUBSTRING(name, LOCATE(' ', name) + 1) AS last_name
FROM customers;
Kueri ini membagi nama lengkap berdasarkan spasi.
6.2 Best practice
- Ekstraksi seperlunya saja: Ambil hanya bagian yang benar-benar diperlukan untuk mengurangi beban performa.
- Perhatikan tipe data: Jika menggunakan
SUBSTRING
pada data numerik, pastikan untuk mengubahnya ke string terlebih dahulu. - Indeks: Saat menggunakan
SUBSTRING
diWHERE
, perhatikan bahwa indeks mungkin tidak digunakan sehingga kueri bisa lebih lambat.
7. Penanganan error dan perbedaan versi
Penting untuk memahami bagaimana SUBSTRING
berperilaku dalam kondisi error dan perbedaan antar versi MySQL.
7.1 Penanganan error
Jika posisi yang ditentukan berada di luar jangkauan string, SUBSTRING
akan mengembalikan string kosong, bukan error. Disarankan menambahkan logika validasi untuk memastikan hasil yang benar.
7.2 Perbedaan versi
Pada beberapa versi lama MySQL, perlakuan terhadap karakter multibyte mungkin berbeda. Pastikan untuk memeriksa kompatibilitas antar versi dan sesuaikan jika diperlukan.