0Pricing
SQL Interview Prep · Pelajaran

LIKE, Karakter Pengganti, dan Escape

Pencocokan pola, tanda persen versus garis bawah, serta escape untuk karakter pengganti literal.

LIKE, Karakter Pengganti, dan Escape adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Pencocokan Pola di Bawah Sorotan Wawancara

LIKE tampak sederhana, tetapi menyembunyikan tiga jebakan klasik dalam wawancara: mencampuradukkan % dengan _, lupa bahwa tanda persen atau garis bawah harfiah dalam data perlu diloloskan, serta kejutan sensitivitas huruf besar-kecil yang berbeda-beda menurut basis data.

Pelajaran ini mendalami dua karakter pengganti, klausa ESCAPE, dan aturan lintas dialek yang akan diselidiki pewawancara untuk membedakan pemula dari orang yang telah merilis fitur pencarian nyata.

Dua Karakter Pengganti

LIKE memiliki tepat dua karakter pengganti:

  • % mencocokkan nol atau lebih banyak karakter
  • _ mencocokkan tepat satu karakter

Jadi, 'a%' cocok dengan apa pun yang diawali huruf a, sedangkan 'a_' cocok dengan teks dua karakter yang diawali huruf a. Mencampuradukkan keduanya adalah kesalahan LIKE nomor satu.

SELECT *
FROM customers
WHERE name LIKE 'A%';
-- every name beginning with A

Persen di Mana Saja

Tempatkan % untuk mengatur di mana pencocokan dimulai dan berakhir:

  • '%son' berakhir dengan teks son (Johnson, Mason)
  • '%mary%' memuat mary di mana pun
  • 'J%n' diawali J dan diakhiri n

'%' yang berdiri sendiri cocok dengan setiap baris yang bukan NULL. Nilai NULL tidak pernah cocok dengan pola LIKE apa pun, termasuk '%'.

SELECT *
FROM customers
WHERE email LIKE '%@gmail.com';

Garis Bawah untuk Panjang Tetap

_ mencocokkan satu karakter sembarang, sehingga berguna untuk kode dengan panjang tetap. 'A__' cocok dengan tepat tiga karakter yang diawali A, tidak lebih dan tidak kurang.

Pewawancara menguji hal ini dengan kode produk atau kode negara. Kandidat yang menulis 'A%' ketika diminta mencari kode tiga karakter yang diawali A melakukan kesalahan halus, karena kueri tersebut mengembalikan apa pun yang diawali A.

SELECT *
FROM products
WHERE sku LIKE 'A__';
-- A followed by exactly two more characters

Saat % dan _ Muncul dalam Data

Bagaimana jika Anda perlu menemukan nilai yang secara harfiah memuat tanda persen, seperti label diskon 'diskon 50%'? Menulis LIKE '%50%%' tidak berhasil, karena % yang terakhir diperlakukan sebagai karakter pengganti, bukan karakter harfiah.

Anda harus memberi tahu SQL bahwa satu karakter tertentu bersifat harfiah. Itulah kegunaan klausa ESCAPE.

Klausa ESCAPE

Nyatakan karakter pelolos dengan ESCAPE, lalu awali setiap karakter pengganti yang ingin diperlakukan secara harfiah dengan karakter tersebut. Di sini, ! adalah karakter pelolos, sehingga !% berarti tanda persen harfiah.

Dengan cara ini, Anda dapat menemukan nilai yang memuat teks harfiah 50% di mana pun. Karakter pelolosnya bebas; pilih karakter yang tidak muncul dalam teks pencarian Anda.

SELECT *
FROM promos
WHERE label LIKE '%50!%%' ESCAPE '!';
-- matches a literal '50%' anywhere in label

Meloloskan Garis Bawah Harfiah

Garis bawah tersembunyi dalam nama pengguna dan pengenal, dan _ yang tidak diloloskan diam-diam mencocokkan karakter apa pun. Untuk menemukan alamat surel yang secara harfiah diawali dengan 'a_b', Anda harus meloloskan garis bawahnya.

Tanpa pelolosan, 'a_b%' juga akan cocok dengan 'axb', 'a9b', dan seterusnya. Cacat ini terus masuk ke produksi karena kueri tanpa pelolosan tetap menghasilkan baris yang tampak masuk akal.

SELECT *
FROM users
WHERE handle LIKE 'a!_b%' ESCAPE '!';
-- handle starting with the literal text a_b

Sensitivitas Huruf Besar-Kecil Berbeda Menurut Basis Data

Apakah LIKE peka terhadap huruf besar-kecil bergantung pada mesin dan kolasi:

  • PostgreSQL: LIKE peka terhadap huruf besar-kecil; gunakan ILIKE jika tidak ingin membedakannya
  • MySQL: bergantung pada kolasi kolom, dan sering kali secara bawaan tidak peka terhadap huruf besar-kecil
  • SQL Server: bergantung pada pengaturan kolasi

Pendekatan yang portabel dan eksplisit adalah mengubah kedua sisi menjadi huruf kecil.

SELECT *
FROM customers
WHERE LOWER(name) LIKE 'a%';

Biaya Performa yang Tersembunyi

Karakter pengganti di awal seperti '%son' tidak dapat menggunakan indeks pohon-B biasa, karena indeks diurutkan berdasarkan prefiks dan awalnya tidak ditambatkan. Mesin harus memindai setiap baris.

'son%' (karakter pengganti di akhir dengan awalan tertambat) dapat menggunakan indeks. Pewawancara suka menanyakan alasan pencarian LIKE berjalan lambat; karakter % di awal biasanya merupakan jawabannya.

-- index-friendly (anchored prefix):
WHERE name LIKE 'Smi%'
-- forces a scan (leading wildcard):
WHERE name LIKE '%mith'

Melampaui LIKE

Ketika LIKE tidak cukup, sebutkan alternatifnya untuk menunjukkan wawasan:

  • SIMILAR TO dan ekspresi reguler POSIX (~, ~*) di PostgreSQL untuk ekspresi reguler yang sesungguhnya
  • Indeks pencarian teks penuh untuk kumpulan teks bebas berukuran besar
  • Indeks trigram (pg_trgm) untuk mempercepat pencarian dengan karakter pengganti di awal

Menyebutkan hal-hal ini menunjukkan bahwa Anda tahu LIKE adalah tingkat dasar, bukan batas tertinggi, dalam pencarian teks.

Membangun Pola LIKE dari Masukan Pengguna dengan Aman

Pewawancara sering bertanya: bagaimana Anda mencari istilah yang diketik pengguna dengan LIKE tanpa menimbulkan masalah? Dua risiko yang perlu disebutkan:

  • Injeksi — gunakan nilai sebagai parameter terikat; jangan pernah menggabungkan masukan mentah ke dalam string SQL.
  • Karakter pengganti yang tidak diloloskan — jika masukan itu sendiri mengandung % atau _, ubah penanganannya agar karakter tersebut dicocokkan secara harfiah.

Gunakan parameter terikat, lalu tambahkan karakter pengganti Anda sendiri dalam kueri.

-- $1 is bound as a parameter; wildcards are added in SQL
SELECT *
FROM products
WHERE name LIKE '%' || replace(replace($1, '_', '\_'), '%', '\%') || '%' ESCAPE '\';

Pemeriksaan Singkat

Ingat perbedaan antara kedua karakter pengganti.

Rangkuman

Poin penting:

  • % mencocokkan nol atau lebih banyak karakter; _ mencocokkan tepat satu karakter
  • Untuk mencocokkan % atau _ harfiah dalam data, nyatakan karakter pelolos dengan ESCAPE dan awali karakter pengganti tersebut dengan karakter pelolos
  • Sensitivitas huruf besar-kecil berbeda-beda menurut mesin; LOWER() pada kedua sisi adalah perbaikan portabel (PostgreSQL memiliki ILIKE)
  • Karakter pengganti di awal memaksa pemindaian penuh; awalan yang tertambat dapat menggunakan indeks

Garis bawah yang tidak diloloskan adalah cacat diam-diam: tetap mengembalikan baris yang tampak masuk akal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “LIKE, Karakter Pengganti, dan Escape” gratis?

Ya — teks lengkap “LIKE, Karakter Pengganti, dan Escape” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “LIKE, Karakter Pengganti, dan Escape”?

Pencocokan pola, tanda persen versus garis bawah, serta escape untuk karakter pengganti literal. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?

Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “LIKE, Karakter Pengganti, dan Escape” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?

Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Prioritas AND/OR dan Penggunaan Tanda Kurung
  2. BETWEEN, IN, dan Batas Inklusif
  3. LIKE, Karakter Pengganti, dan Escape
  4. Memfilter Nilai yang Dihitung
← Kembali ke SQL Interview Prep