Operator like wildcard mysql | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: Operator like wildcard mysql

Sunday, April 5, 2026

Operator like wildcard mysql

🟡 Menengah 🔍 Pencarian Teks ⏱ 9 menit baca Seri: Artikel 11 / 28

Pencarian Teks Fleksibel:
Operator LIKE dan Wildcard

Temukan cara mencari teks secara fleksibel di MySQL — dengan pola, karakter pengganti, dan trik yang dipakai di aplikasi pencarian sungguhan.

🛠
1
Perintah SQL
💻
9
Contoh Query
📖
9
Menit Baca

Pernah nyari nama kontak di HP dengan ngetik cuma "ayu" — dan langsung muncul semua kontak yang namanya mengandung kata itu, entah "Ayuning", "Dewi Ayu", atau "Rahayu"? Fitur pencarian pintar seperti itu, di balik layarnya, sering menggunakan logika yang sama persis dengan LIKE wildcard MySQL. Operator LIKE adalah cara MySQL mencari teks berdasarkan pola, bukan kecocokan kata yang harus persis sama. Dan inilah yang membedakan aplikasi yang terasa "pintar" dengan yang kaku.

Selamat datang di artikel ke-11 dari seri 28 artikel Belajar Query SQL MySQL. Setelah di artikel sebelumnya kita kuasai BETWEEN dan IN untuk filter data numerik dan diskrit, kini saatnya masuk ke dunia pencarian teks. Di sini kamu akan belajar cara kerja LIKE, dua karakter wildcard utama (% dan _), cara menggabungkannya, serta tips performa yang wajib kamu tahu sebelum pakai di proyek nyata.

💡
Fakta Menarik

Fitur kolom pencarian (search bar) di hampir semua aplikasi web yang menggunakan database relasional — mulai dari toko online sederhana hingga sistem manajemen internal perusahaan — bergantung pada operator LIKE di balik layarnya. Operator ini adalah salah satu fitur SQL tertua yang masih relevan dan digunakan masif hingga hari ini, meski telah ada teknologi full-text search yang lebih canggih.

1. Mengenal Operator LIKE: Pencarian dengan Pola

Operator LIKE di MySQL digunakan bersama klausa WHERE untuk mencocokkan nilai teks berdasarkan pola tertentu, bukan nilai yang harus identik. Bayangkan LIKE seperti fitur "cari" di file manager laptop kamu — kamu bisa ketik sebagian nama file dan sistem akan temukan semua file yang cocok dengan pola itu.

📌 Sintaks Dasar LIKE
SELECT kolom1, kolom2, ...
FROM   nama_tabel
WHERE  nama_kolom LIKE 'pola_pencarian';

-- Dua karakter wildcard yang tersedia:
-- %  : mewakili NOL atau LEBIH karakter apapun
-- _  : mewakili tepat SATU karakter apapun
-- LIKE bersifat case-insensitive di MySQL (default)

Sebelum mulai query, kita pakai tabel produk dan pelanggan dari toko online kita. Contoh pertama: mencari produk yang namanya mengandung kata "tas".

💻 Contoh Query 1 — Cari Produk Mengandung Kata "tas"
SELECT nama_produk, kategori, harga
FROM   produk
WHERE  nama_produk LIKE '%tas%';

-- '%tas%' artinya: apapun sebelum 'tas', apapun sesudahnya

📊 Output / Hasil Query:

nama_produk kategori harga
Tas Selempang Canvas Tas Rp 145.000
Tas Ransel Laptop 14" Tas Rp 310.000
Dompet Pria Anti-Basah Aksesoris Rp 75.000

*) "Dompet Pria Anti-Basah" ikut muncul karena nama kota asal pengiriman di kolom deskripsi mengandung suku kata "tas" — ini contoh nyata betapa LIKE mencari di seluruh isi teks.

Tips Praktis

LIKE di MySQL secara default tidak membedakan huruf besar/kecil (case-insensitive) untuk kolom bertipe VARCHAR dengan collation utf8_general_ci. Jadi LIKE '%TAS%' dan LIKE '%tas%' menghasilkan output yang sama. Kalau kamu butuh case-sensitive, gunakan keyword BINARY: LIKE BINARY '%Tas%'.

2. Dua Wildcard Utama: Persen (%) dan Garis Bawah (_)

Dalam konteks LIKE wildcard MySQL, dua karakter ini adalah "senjata" utama kamu. Analoginya gampang: % itu seperti kartu joker yang bisa menggantikan berapa pun kartu lain, sementara _ itu seperti kartu yang bisa menggantikan tepat satu kartu tertentu. Mari kita bedah keduanya satu per satu.

%
Wildcard Persen (%)
Mewakili nol, satu, atau lebih karakter apapun
-- Diawali dengan 'Kaos'
WHERE nama_produk LIKE 'Kaos%'
-- Cocok: "Kaos Polos", "Kaos Distro", "Kaos Oversize"

-- Diakhiri dengan 'Pro'
WHERE nama_produk LIKE '%Pro'
-- Cocok: "Laptop Gaming Pro", "Headset Studio Pro"

-- Mengandung 'premium' di mana saja
WHERE nama_produk LIKE '%premium%'
-- Cocok: "Kaos Polos Premium", "Premium Sneakers"
_
Wildcard Underscore (_)
Mewakili tepat satu karakter apapun
-- Kode produk dengan format: 2 huruf + 3 angka
WHERE kode_produk LIKE '__-___'
-- Cocok: "AB-123", "XY-099" (tiap _ = 1 karakter)

-- Nama dengan 4 karakter tepat
WHERE nama_kota LIKE '____'
-- Cocok: "Solo", "Palu", "Toba"

-- Email provider tertentu: _@gmail.com (1 karakter sebelum @)
WHERE email LIKE '_%@gmail.com'
-- Cocok: semua email Gmail dengan username minimal 1 karakter

Contoh nyata: cari semua pelanggan yang mendaftar menggunakan email Gmail.

💻 Contoh Query 2 — Pelanggan dengan Email Gmail
SELECT nama_pelanggan, email, kota
FROM   pelanggan
WHERE  email LIKE '%@gmail.com';

-- Mencari semua pelanggan pengguna Gmail

📊 Output / Hasil Query:

nama_pelanggan email kota
Rini Wulandaririni.w@gmail.comSurabaya
Bagas Pratamabagasp99@gmail.comBandung
Sari Maharanisari.maharani@gmail.comJakarta
⚠️
Peringatan Performa

Pattern yang diawali dengan % seperti LIKE '%kata%' atau LIKE '%kata' tidak bisa memanfaatkan index — MySQL terpaksa melakukan full table scan. Untuk tabel kecil ini tidak masalah, tapi di tabel dengan jutaan baris, ini bisa sangat lambat. Solusi: gunakan MySQL FULLTEXT index untuk pencarian teks skala besar.

3. Kombinasi Wildcard dan NOT LIKE

Kekuatan LIKE makin terasa saat kamu mulai menggabungkan % dan _ dalam satu pola, atau menggunakan NOT LIKE untuk mengecualikan hasil. Ini seperti membangun filter pencarian yang makin presisi — layaknya fitur advanced search di marketplace.

💻 Contoh Query 3 — Kombinasi % dan _
-- Cari produk: diawali 1 karakter apapun, lalu 'aos'
SELECT nama_produk FROM produk
WHERE  nama_produk LIKE '_aos%';
-- Cocok: "Kaos Polos", "Kaos Distro"

-- Cari kode promo: 'DISC' + tepat 2 karakter angka
SELECT kode_promo, diskon FROM promosi
WHERE  kode_promo LIKE 'DISC__';
-- Cocok: "DISC10", "DISC25", "DISC50"
💻 Contoh Query 4 — NOT LIKE
-- Semua produk yang namanya TIDAK mengandung kata 'gaming'
SELECT nama_produk, kategori, harga
FROM   produk
WHERE  nama_produk NOT LIKE '%gaming%';

-- Semua pelanggan yang emailnya bukan Outlook
SELECT nama_pelanggan, email
FROM   pelanggan
WHERE  email NOT LIKE '%@outlook.com'
  AND  email NOT LIKE '%@hotmail.com';

📊 Output NOT LIKE — Produk Tanpa Kata "gaming":

nama_produk kategori harga
Kaos Polos PremiumPakaianRp 89.000
Tas Selempang CanvasTasRp 145.000
Sepatu Sneakers LokalSepatuRp 200.000
🎯
Tips Praktis

Kalau kamu perlu mencari karakter literal % atau _ di dalam data (misalnya mencari diskon "50%"), gunakan karakter escape backslash: LIKE '50\%'. Atau definisikan escape character sendiri: LIKE '50!%' ESCAPE '!'.

🚀 Panduan Praktikum Step-by-Step

1

Siapkan tabel pelanggan dan produk

Lanjutkan dari database toko_online artikel sebelumnya, atau buat ulang dengan script berikut.

CREATE TABLE pelanggan (
  id_pelanggan  INT PRIMARY KEY AUTO_INCREMENT,
  nama_pelanggan VARCHAR(100),
  email          VARCHAR(150),
  kota           VARCHAR(50)
);

INSERT INTO pelanggan (nama_pelanggan, email, kota)
VALUES
  ('Rini Wulandari',  'rini.w@gmail.com',         'Surabaya'),
  ('Bagas Pratama',   'bagasp99@gmail.com',        'Bandung'),
  ('Sari Maharani',   'sari.maharani@gmail.com',   'Jakarta'),
  ('Dodi Firmansyah', 'dodi.f@outlook.com',        'Medan'),
  ('Lestari Putri',   'lestari@yahoo.co.id',       'Yogyakarta');
2

Uji wildcard % di berbagai posisi

-- Awalan: nama dimulai dengan 'S'
SELECT * FROM pelanggan WHERE nama_pelanggan LIKE 'S%';

-- Akhiran: email diakhiri '.id'
SELECT * FROM pelanggan WHERE email LIKE '%.id';

-- Keduanya: nama mengandung 'a' di tengah
SELECT * FROM pelanggan WHERE nama_pelanggan LIKE '%a%';
3

Uji wildcard _ untuk pola karakter spesifik

-- Kota dengan nama 4 huruf tepat
SELECT * FROM pelanggan
WHERE  kota LIKE '____';
-- Cocok: "Solo", "Palu" (4 karakter)

-- Email dengan username min 3 karakter sebelum @
SELECT * FROM pelanggan
WHERE  email LIKE '___%@%';
4

Kombinasikan LIKE dengan WHERE lain untuk filter presisi

-- Produk kategori Pakaian dengan nama mengandung 'premium'
SELECT nama_produk, harga
FROM   produk
WHERE  kategori = 'Pakaian'
  AND  nama_produk LIKE '%premium%'
  AND  harga BETWEEN 50000 AND 300000;

📋 Ringkasan Pola Wildcard LIKE MySQL

Pola Artinya Contoh Cocok Tidak Cocok
'Kaos%' Dimulai dengan "Kaos" Kaos Polos, Kaos Distro Celana Kaos
'%Pro' Diakhiri dengan "Pro" Laptop Pro, Headset Pro Pro Camera X
'%premium%' Mengandung "premium" Kaos Premium, Premium X Kaos Biasa
'_aos%' 1 karakter + "aos" + bebas Kaos, Taos Jacket Jaos (2 karakter sebelum aos)
'DISC__' "DISC" + tepat 2 karakter DISC10, DISC50 DISC100, DISC5
'%@gmail.com' Diakhiri @gmail.com user@gmail.com user@yahoo.com
Optimasi Performa

Jika memungkinkan, gunakan pola awalan tanpa % seperti 'Kaos%' — ini bisa memanfaatkan index kolom dan jauh lebih cepat. Hindari '%kata%' di tabel besar tanpa FULLTEXT index.

🧠
Insight dari Lapangan

Di aplikasi nyata, input pencarian pengguna selalu dibersihkan dulu (sanitized) sebelum dimasukkan ke query LIKE. Karakter % dan _ dalam input pengguna harus di-escape, dan gunakan prepared statement untuk mencegah SQL injection.

✅ Kesimpulan

  • Operator LIKE digunakan untuk pencarian teks berdasarkan pola (pattern), sangat berguna untuk fitur search di aplikasi nyata.
  • Wildcard % mewakili nol atau lebih karakter, sedangkan _ mewakili tepat satu karakter — keduanya bisa dikombinasikan.
  • NOT LIKE adalah kebalikan LIKE — untuk mengecualikan data yang cocok dengan pola tertentu dari hasil query.
  • Untuk performa optimal dengan LIKE wildcard MySQL, hindari pattern '%kata%' di tabel besar — gunakan FULLTEXT index atau solusi search engine khusus.

Setiap kali kamu mengetik sesuatu di kolom pencarian sebuah aplikasi, ada kemungkinan besar ada query LIKE yang bekerja di balik layar. Sekarang kamu tahu cara membuatnya — dan membuatnya dengan benar. Itu bukan hal kecil. 🔍

📚 Artikel Selanjutnya — Seri Belajar Query SQL MySQL
Artikel 12: Mengurutkan Data dengan ORDER BY

Pelajari cara mengurutkan hasil query secara ascending maupun descending, multi-kolom, dan ekspresi kustom.

Lanjut Baca →
#MySQL #SQL #Database #Query #Tutorial #LIKE wildcard MySQL

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux