Penjelasan MySQL SUBSTRING(): Ekstrak Bagian dari String dengan Contoh

1. Apa Itu Fungsi SUBSTRING?

Fungsi SUBSTRING adalah fungsi MySQL penting yang digunakan untuk mengekstrak substring dari sebuah string. Dengan fungsi ini, Anda dapat mengambil hanya bagian yang Anda butuhkan dari data yang disimpan dalam basis data. Misalnya, fungsi ini berguna ketika Anda ingin mengekstrak bagian domain dari alamat email pengguna, atau mengambil bagian tertentu dari kode produk.

1.1 Sintaks Dasar

Sintaks dasar fungsi SUBSTRING adalah sebagai berikut:

SUBSTRING(str, pos)
SUBSTRING(str, pos, len)
  • str : String yang akan diekstrak.
  • pos : Posisi awal (dimulai dari 1).
  • len : Jumlah karakter yang akan diekstrak (opsional).

Jika pos bernilai positif, MySQL menghitung maju dari awal string. Jika bernilai negatif, MySQL menghitung mundur dari akhir string. Jika len dihilangkan, MySQL mengekstrak dari posisi yang ditentukan hingga akhir string.

1.2 Kasus Penggunaan Fungsi SUBSTRING

Fungsi ini digunakan untuk memformat data string dan mengekstrak bagian tertentu, sehingga memudahkan pencarian dan pemrosesan informasi secara efisien dalam basis data.

2. Penggunaan Dasar Fungsi SUBSTRING

Untuk memahami dasar-dasarnya, mari lihat beberapa contoh sederhana.

2.1 Mengekstrak Bagian dari String

Query berikut mengekstrak 6 karakter mulai dari karakter ke-3 dari string “Hello, World!”.

SELECT SUBSTRING('Hello, World!', 3, 6);

Hasilnya adalah "llo, W". Karena pos adalah 3, ekstraksi dimulai dari karakter ke-3, dan karena len adalah 6, 6 karakter diekstrak.

2.2 Mengabaikan Parameter Panjang

Jika Anda mengabaikan len, MySQL mengekstrak dari posisi yang ditentukan hingga akhir string.

SELECT SUBSTRING('Hello, World!', 8);

Hasilnya adalah "World!", yang mengambil semua karakter mulai dari karakter ke-8 hingga akhir.

2.3 Menggunakan Posisi Negatif

Jika Anda menggunakan nilai negatif, Anda dapat menentukan posisi dari akhir string.

SELECT SUBSTRING('Hello, World!', -5);

Query ini mengembalikan "orld!", mengekstrak 5 karakter terakhir.

3. Aplikasi Praktis Fungsi SUBSTRING

Fungsi SUBSTRING sering digunakan dalam operasi data dunia nyata. Berikut beberapa contoh praktis.

3.1 Mengekstrak Domain dari Alamat Email

Dengan menggabungkan SUBSTRING dengan LOCATE, Anda dapat mengekstrak bagian domain dari sebuah alamat email.

SELECT email, SUBSTRING(email, LOCATE('@', email) + 1) AS domain FROM users;

Query ini mengekstrak string setelah “@” dan mengembalikan hanya bagian domain.

3.2 Mengekstrak Bagian dari Kode Produk

Contoh ini mengekstrak bagian tertentu dari kode produk.

SELECT product_code, SUBSTRING(product_code, 5, 4) AS product_id FROM products;

Dalam query ini, 4 karakter mulai dari karakter ke-5 dari kode produk diekstrak dan ditampilkan sebagai kolom baru bernama product_id.

3.3 Menggunakannya dalam Subquery

Dengan menggabungkannya dengan subquery, Anda dapat mengekstrak data dengan kondisi yang lebih kompleks.

SELECT id, SUBSTRING(description, 1, 10) AS short_desc FROM (SELECT * FROM products WHERE category = 'Electronics') AS sub;

Query ini mengekstrak 10 karakter pertama dari description pada produk yang category-nya adalah ‘Electronics’.

4. Perbandingan dengan Fungsi String Lain

Fungsi lain yang dapat digunakan untuk tujuan serupa dengan SUBSTRING meliputi LEFT, RIGHT, dan SUBSTR.

4.1 Fungsi LEFT dan RIGHT

  • LEFT(str, len) : Mengambil sejumlah karakter yang ditentukan dari awal string.
  • RIGHT(str, len) : Mengambil sejumlah karakter yang ditentukan dari akhir string.
    SELECT LEFT('Hello, World!', 5);  -- "Hello"
    SELECT RIGHT('Hello, World!', 6); -- "World!"
    

Fungsi-fungsi ini nyaman ketika Anda ingin mengekstrak substring dari awal atau akhir string.

4.2 Fungsi SUBSTR

SUBSTR adalah alias untuk SUBSTRING, sehingga dapat digunakan dengan cara yang sama.

SELECT SUBSTR('Hello, World!', 8); -- "World!"

Kueri ini mengembalikan "World!", sama seperti SUBSTRING.

5. Penggunaan Lanjutan dan Optimasi untuk Fungsi SUBSTRING

Bagian ini menjelaskan penggunaan yang lebih lanjutan dan teknik optimasi.

5.1 Optimasi Kinerja

Menggunakan SUBSTRING pada dataset yang besar dapat memengaruhi kinerja. Jika diperlukan, buat indeks dan periksa rencana eksekusi kueri. Juga, jika Anda sering mengekstrak substring yang sama, pertimbangkan untuk menyimpan hasilnya dalam cache.

5.2 Menggunakannya dalam Klausa WHERE

Anda dapat menggunakan SUBSTRING dalam klausa WHERE untuk menyaring catatan berdasarkan kondisi substring.

SELECT * FROM products WHERE SUBSTRING(product_code, 1, 3) = 'ABC';

Kueri ini mencari produk di mana 3 karakter pertama dari product_code adalah ‘ABC’.

6. Contoh dan Praktik Terbaik untuk Fungsi SUBSTRING

Berikut adalah contoh praktis penggunaan SUBSTRING dan praktik terbaik untuk pekerjaan nyata.

6.1 Kode Contoh

Contoh berikut memisahkan nama lengkap 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;

Dalam kueri ini, nama depan dan nama belakang diekstrak dari nama lengkap yang dipisahkan oleh spasi.

6.2 Praktik Terbaik

  • Ekstrak hanya apa yang Anda butuhkan : Jaga panjang substring sekecil mungkin untuk mengurangi dampak kinerja.
  • Perhatikan tipe data : Jika Anda menerapkan SUBSTRING pada data numerik, Anda mungkin perlu mengubahnya secara eksplisit menjadi string.
  • Pertimbangkan penggunaan indeks : Saat menggunakan SUBSTRING dalam klausa WHERE, indeks mungkin tidak digunakan secara efektif, jadi perhatikan kinerja kueri dengan cermat.

7. Penanganan Kesalahan dan Perbedaan Versi

Bagian ini membahas penanganan kesalahan saat menggunakan SUBSTRING dan perbedaan antar versi MySQL.

7.1 Penanganan Kesalahan

Jika posisi yang ditentukan berada di luar rentang string, SUBSTRING mengembalikan string kosong. Karena ini bukan kesalahan, disarankan menambahkan logika untuk memvalidasi hasil sebelumnya bila diperlukan.

7.2 Perbedaan Versi

Tergantung pada versi MySQL, perilaku fungsi SUBSTRING dapat berbeda. Misalnya, beberapa versi lama mungkin menangani karakter multibita secara berbeda. Periksa kompatibilitas antar versi dan terapkan langkah yang tepat bila diperlukan.