Panduan Lengkap Fungsi SUBSTRING di MySQL: Sintaks, Contoh, dan Best Practice

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 di WHERE, 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.