Mencari & Mengolah Teks: LIKE, ILIKE, dan Fungsi String

Pencarian pola dengan LIKE dan ILIKE (tanpa peduli huruf besar-kecil), wildcard % dan _, menyambung teks, serta fungsi UPPER, LOWER, LENGTH, TRIM, SUBSTRING, REPLACE.

Part 8 dari 25 ± 35 menit Gratis

Analogi: LIKE itu seperti fitur cari (Ctrl+F) di dokumen: kamu mengetik sepotong kata dan database mencari semua yang mengandungnya. Tanda % adalah "kartu joker" yang bisa mewakili kata apa saja, _ mewakili satu huruf saja. ILIKE adalah versi yang tidak peduli huruf besar-kecil.

Mencari dengan pola: LIKE

Kadang kamu tidak tahu teks persisnya, hanya sepotong. LIKE mencocokkan pola dengan dua karakter pengganti (wildcard):

WildcardArtinyaContohCocok dengan
%nol atau lebih karakter apa saja'Do%'Doraemon, Dongeng
_tepat satu karakter apa saja'B_mi'Bumi
SELECT judul FROM buku WHERE judul LIKE 'One%';        -- diawali "One"
SELECT judul FROM buku WHERE judul LIKE '%SQL%';       -- mengandung "SQL" di mana saja
SELECT judul FROM buku WHERE judul LIKE '%Vol. 1';     -- diakhiri "Vol. 1"

Perbedaan penting dengan MySQL: LIKE peka huruf besar-kecil

Di PostgreSQL, LIKE membedakan huruf besar dan kecil: '%sql%' tidak cocok dengan "Dasar-Dasar SQL". Solusinya ILIKE (insensitive LIKE), fitur khas PostgreSQL:

SELECT judul FROM buku WHERE judul ILIKE '%sql%';      -- cocok, abaikan besar-kecil

Ingat: LIKE = persis huruf, ILIKE = bebas huruf. Untuk fitur pencarian di aplikasi, hampir selalu kamu butuh ILIKE.

Kebalikannya: NOT LIKE dan NOT ILIKE.

Fungsi teks yang sering dipakai

FungsiHasilContoh
UPPER(t) / LOWER(t)huruf besar / kecilUPPER('buku') → BUKU
LENGTH(t)jumlah karakterLENGTH('Dilan') → 5
TRIM(t)buang spasi di tepiTRIM(' hai ') → hai
SUBSTRING(t FROM 1 FOR 3)potong teksSUBSTRING('Dilan' FROM 1 FOR 3) → Dil
REPLACE(t, lama, baru)ganti teksREPLACE('a-b','-',' ') → a b
INITCAP(t)huruf awal tiap kata kapitalINITCAP('belajar sql') → Belajar Sql
CONCAT(a, b, ...)sambung teks, NULL dianggap kosongCONCAT('A', NULL, 'B') → AB
a || bsambung teks, NULL membuat hasil NULL'A' || NULL → NULL
SELECT UPPER(judul) AS judul_besar, LENGTH(judul) AS panjang
FROM buku
WHERE kategori_id = 4;

Menyambung kolom jadi kalimat

SELECT penulis || ' menulis "' || judul || '"' AS kalimat FROM buku;

Perhatikan kutip ganda di dalam teks aman karena berada di dalam kutip tunggal.

Jebakan: pola LIKE '%kata%' (wildcard di depan) memaksa database membaca seluruh tabel, lambat di data jutaan baris. Untuk pencarian teks serius, PostgreSQL punya full-text search dan ekstensi pg_trgm.

Kasus nyata: kolom pencarian di toko online

Pengunjung mengetik "kancil" di kotak pencarian, padahal judulnya ditulis "Kancil dan Buaya". Tanpa ILIKE, pencarian gagal karena beda huruf besar:

SELECT judul, penulis FROM buku
WHERE judul ILIKE '%kancil%' OR penulis ILIKE '%kancil%';

Untuk data yang sangat besar, pencarian %kata% lambat karena memindai semua baris. Solusi lanjutannya (full-text search dan index trigram) adalah fitur khas PostgreSQL.

Kesalahan yang sering terjadi

  • Memakai LIKE lalu heran kenapa "kancil" tidak menemukan "Kancil". Di PostgreSQL LIKE peka huruf besar-kecil.
  • Menaruh % di depan pola (%kata) pada tabel jutaan baris tanpa memikirkan kinerja.
  • Lupa menyaring spasi liar di data. Gunakan TRIM() sebelum membandingkan.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X