Operator LIKE SQL: Cari Teks dengan Wildcard % dan _
Blog/Tutorial SQL/Operator LIKE SQL: Cari Teks dengan Wildcard % dan _

Operator LIKE SQL: Cari Teks dengan Wildcard % dan _

BimaBima
·31 Januari 2026·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Operator LIKE di SQL dipakai buat nyari teks yang cocok dengan pola, bukan yang sama persis. Ada dua wildcard: tanda persen (%) mewakili nol karakter atau lebih, dan underscore (_) mewakili tepat satu karakter. Di PostgreSQL, LIKE membedakan huruf besar dan kecil, jadi pakai ILIKE atau bungkus kolomnya dengan LOWER() kalau kamu mau pencarian yang nggak peduli kapitalisasi.

Operator LIKE di SQL dipakai buat nyari teks yang mirip pola tertentu, bukan yang sama persis.

SELECT nama FROM pelanggan
WHERE nama LIKE 'Budi%';

Tanda sama dengan (=) cuma nemu yang identik huruf per huruf. LIKE bisa nemu yang cuma cocok sebagian.

Tapi query di atas punya dua bug yang nggak kelihatan. Nanti aku tunjukin.

Apa itu operator LIKE di SQL?

LIKE adalah operator perbandingan teks yang cocokin isi kolom sama sebuah pola. Polanya ditulis pakai wildcard — karakter khusus yang mewakili karakter lain. Ada dua wildcard di LIKE: tanda persen (%) mewakili nol karakter atau lebih, dan underscore (_) mewakili tepat satu karakter.

LIKE dipakai di klausa WHERE, tempat yang sama kayak operator biasa.

Gimana cara pakai wildcard % dan _?

PolaArtinyaContoh yang cocok
'Budi%'Diawali BudiBudi, Budiman, Budi Santoso
'%Budi'Diakhiri BudiAhmad Budi, Budi
'%Budi%'Mengandung BudiKetiganya di atas
'B_di'4 huruf: B, 1 karakter apa aja, d, iBudi, Bodi
'%@gmail.com'Email gmailrina@gmail.com
'08%'Nomor HP Indonesia08123456789

Bedanya % dan _ gampang diinget: persen itu serakah (berapa pun karakternya, termasuk nol), underscore itu pelit (tepat satu, nggak boleh kurang atau lebih).

LIKE 'B_di' cocok sama "Budi" tapi nggak cocok sama "Budiman" — soalnya polanya cuma 4 karakter, sementara Budiman ada 7.

Contoh kasus: nyari pelanggan bernama Budi di toko_berkah

Tabel pelanggan toko_berkah, 8 baris.

idnamaemailkota
1Budi Santosobudi.santoso@gmail.comBandung
2Budimanbudiman@yahoo.co.idBandung
3Siti Aminahsiti@tokoberkah.co.idSurabaya
4Ahmad Budiahmad.budi@gmail.comMedan
5Rina Kopiahrina@gmail.comBandung
6budi hartonoBUDI.H@Gmail.comJakarta
7Dewi Lestaridewi@corp.co.idSurabaya
8Toni_Wijayatoni@gmail.comMedan

Ada 4 orang yang namanya mengandung "budi": Budi Santoso, Budiman, Ahmad Budi, dan budi hartono.

Sekarang lihat apa yang kejadian.

SELECT nama FROM pelanggan WHERE nama LIKE 'Budi%';
-- Budi Santoso
-- Budiman
-- 2 baris

Dari 4 pelanggan bernama Budi di tabel toko_berkah, LIKE 'Budi%' cuma nemu 2. Ahmad Budi kelewat karena namanya di belakang. budi hartono kelewat karena huruf b-nya kecil.

Dua bug, satu query. Ini kenapa laporan "jumlah pelanggan bernama Budi" sering salah.

Gimana cara bikin LIKE nggak peduli huruf besar-kecil?

Di PostgreSQL, LIKE membedakan huruf besar dan kecil. 'Budi%' nggak cocok sama 'budi hartono'.

Di MySQL dengan collation bawaan, LIKE justru nggak peduli. Query yang sama, hasil beda — tergantung databasenya.

Cara paling aman yang jalan di mana pun: samain hurufnya dulu.

SELECT nama FROM pelanggan
WHERE LOWER(nama) LIKE '%budi%';

-- Budi Santoso
-- Budiman
-- Ahmad Budi
-- budi hartono
-- 4 baris ✅

Sekarang keempatnya kena. Perhatiin polanya juga aku ubah jadi huruf kecil semua — kalau nggak, nggak akan ada yang cocok.

Khusus PostgreSQL ada jalan pintas: ILIKE.

SELECT nama FROM pelanggan
WHERE nama ILIKE '%budi%';

Hasilnya sama. Tapi ILIKE cuma ada di PostgreSQL, jadi kalau query kamu harus portabel, pakai LOWER. Fungsi teks lain yang sering dipakai bareng ada di panduan fungsi string SQL.

Gimana cara nyari karakter % atau _ secara harfiah?

Pelanggan nomor 8 namanya Toni_Wijaya, pakai underscore beneran. Coba cari.

-- SALAH: underscore dianggap wildcard
SELECT nama FROM pelanggan WHERE nama LIKE '%_%';
-- hasilnya SEMUA 8 baris 😵

Underscore di situ diartikan sebagai "satu karakter apa aja", dan semua nama punya minimal satu karakter. Jadi semuanya kena.

Solusinya: kasih tau database bahwa underscore itu karakter biasa, pakai ESCAPE.

SELECT nama FROM pelanggan
WHERE nama LIKE '%\_%' ESCAPE '\';

-- Toni_Wijaya
-- 1 baris ✅

Aturannya sama buat tanda persen. Kalau kamu nyari produk bernama "Diskon 50%", pakai LIKE '%50\%%' ESCAPE '\'.

Aturan lengkap wildcard dan escape ada di dokumentasi PostgreSQL untuk pattern matching.

Kenapa query LIKE bisa lambat banget?

Ini bagian yang bikin LIKE punya reputasi jelek di tim engineering.

WHERE nama LIKE 'Budi%'    -- bisa pakai index, cepat
WHERE nama LIKE '%Budi%'   -- nggak bisa pakai index, lambat

Index di database itu urut secara alfabet. Kalau kamu tau awalan katanya, database bisa langsung loncat ke bagian yang bener — sama kayak nyari kata di kamus.

Tapi kalau polanya diawali %, database nggak tau harus mulai dari mana. Dia terpaksa baca semua baris satu per satu. Di tabel 10 baris, nggak kerasa. Di tabel 10 juta baris, query bisa jalan berpuluh detik.

Yang aku lakuin di tabel besar:

  • Pakai LIKE 'awalan%' kalau memungkinkan — index tetap kepakai.
  • Kalau butuh nyari di tengah teks, bikin trigram index (pg_trgm di PostgreSQL).
  • Buat pencarian teks yang beneran serius, pindah ke full-text search.

Catatan: LOWER(nama) LIKE ... juga matiin index biasa. Kalau kamu sering pakai pola ini, bikin functional index di LOWER(nama).

Kesalahan umum waktu pakai LIKE

  • Lupa huruf besar-kecil. Query jalan, hasilnya kurang. Nggak ada error yang ngasih tau.
  • Pakai = padahal maunya LIKE. WHERE nama = 'Budi%' nyari nama yang literal-nya "Budi%", termasuk tanda persennya.
  • Lupa ESCAPE di kolom yang ada underscore. Hasilnya semua baris kena, dan kamu ngira datanya emang gitu.
  • Pakai % di depan padahal nggak perlu. Kalau kamu cuma nyari awalan, jangan pakai '%Budi%'. Buang % depannya.
  • NOT LIKE ketemu NULL. Baris yang nilainya NULL nggak akan pernah lolos NOT LIKE. Tambahin OR nama IS NULL kalau kamu mau dia ikut.

Yang terakhir ini sama persis kayak jebakan NOT IN. Perilaku NULL lengkapnya ada di glosarium NULL.

FAQ

Apa bedanya % dan _ di LIKE?

Persen mewakili nol karakter atau lebih. Underscore mewakili tepat satu karakter. 'B%' cocok sama Budi dan Budiman. 'B_di' cuma cocok sama kata 4 huruf kayak Budi.

Apakah LIKE membedakan huruf besar-kecil?

Di PostgreSQL, iya. Di MySQL dengan collation bawaan, nggak. Cara aman yang jalan di mana pun: bungkus pakai LOWER() di dua sisi.

Kenapa query LIKE lambat?

Pola yang diawali % bikin database nggak bisa pakai index, jadi dia baca semua baris. Di tabel jutaan baris, ini kerasa banget.

Apa alternatif LIKE kalau polanya rumit?

Regular expression. PostgreSQL punya operator ~, MySQL punya REGEXP. Pakai buat pola kayak nomor HP yang harus 10–13 digit — yang nggak bisa ditulis pakai LIKE.

Rangkuman

  • % = nol karakter atau lebih. _ = tepat satu karakter.
  • LIKE peka huruf besar-kecil di PostgreSQL. Pakai LOWER() biar aman — di tabel toko_berkah, ini yang bikin hasil naik dari 2 jadi 4 baris.
  • % di depan pola bikin index nggak kepakai. Hindari kalau tabelnya besar.

Semua query di sini udah dites dan siap copy-paste. Latihan langsung di halaman operator LIKE — editornya jalan di browser.

Lanjut baca: Operator IN dan BETWEEN SQL buat nyaring daftar nilai dan rentang.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel Terkait

7 SQL Client Gratis Terbaik buat Analis Data (2026)
Tutorial SQL
10 Juli 2026•9 menit baca

7 SQL Client Gratis Terbaik buat Analis Data (2026)

Nggak perlu bayar buat nulis query. Ini 7 SQL client gratis yang beneran dipakai analis, plus kelebihan dan kekurangannya masing-masing.

BimaBima
SQL Style Guide: Cara Nulis Query yang Enak Dibaca Tim
Tutorial SQL
7 Juli 2026•9 menit baca

SQL Style Guide: Cara Nulis Query yang Enak Dibaca Tim

Sepuluh aturan SQL style guide yang bikin query kamu kebaca sama tim — dan sama kamu sendiri 6 bulan lagi. Lengkap dengan contoh sebelum-sesudah.

BimaBima
Take-Home Test SQL Data Analyst: Contoh Soal + Cara Ngerjainnya
Tutorial SQL
4 Juli 2026•11 menit baca

Take-Home Test SQL Data Analyst: Contoh Soal + Cara Ngerjainnya

Contoh soal take-home test SQL yang beneran dipakai perusahaan, dikerjain step by step — dari baca soal, nulis query, sampai nyusun insight yang bikin recruiter nengok.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore