0Pricing
SQL Interview Prep · Ders

LIKE, Joker Karakterler ve Kaçış

Örüntü eşleştirmeyi, yüzde işareti ile alt çizgi arasındaki farkı ve gerçek joker karakterleri kaçırmayı öğrenin.

LIKE, Joker Karakterler ve Kaçış, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Mülakat Merceği Altında Desen Eşleştirme

LIKE basit görünür, ancak üç klasik mülakat tuzağını barındırır: % ile _ karakterlerini karıştırmak, verilerdeki gerçek yüzde veya alt çizgi karakterinin kaçış gerektirdiğini unutmak ve veritabanına göre değişen büyük/küçük harf duyarlılığı sürprizi.

Bu derste iki joker karakteri, ESCAPE yan tümcesini ve farklı SQL lehçeleri arasındaki kuralları ayrıntılı olarak ele alacağız. Görüşmeci bunları, yeni başlayanları gerçek arama özelliklerini yayına almış kişilerden ayırmak için sorgular.

İki Joker Karakter

LIKE tam olarak iki joker karaktere sahiptir:

  • %, sıfır veya daha fazla karakterle eşleşir
  • _, tam olarak bir karakterle eşleşir

Bu nedenle 'a%', a ile başlayan her şeyle eşleşirken 'a_', a ile başlayan iki karakterlik bir dizeyle eşleşir. Bunları karıştırmak, LIKE kullanımındaki en yaygın hatadır.

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

Yüzde İşaretini Her Yere Koyma

Eşleşmenin nereye sabitleneceğini denetlemek için % işaretini konumlandırın:

  • '%son', son ile biter (Johnson, Mason)
  • '%mary%', herhangi bir konumda mary içeren değerlerle eşleşir
  • 'J%n', J ile başlar ve n ile biter

Tek başına kullanılan '%', NULL olmayan her satırla eşleşir. NULL değerleri, '%' dahil hiçbir LIKE deseniyle asla eşleşmez.

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

Sabit Uzunluk İçin Alt Çizgi

_, sabit genişlikli kodlar için yararlı olan herhangi bir tek karakterle eşleşir. 'A__', A ile başlayan tam olarak üç karakterle eşleşir; ne daha fazlasıyla ne de daha azıyla.

Görüşmeciler bunu ürün kodları veya ülke kodları üzerinden sınar. A ile başlayan üç karakterlik bir kod istendiğinde 'A%' yazan aday, bunu biraz fark edilecek şekilde yanlış yapar; çünkü A ile başlayan her şeyi döndürür.

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

Verilerde % ve _ Göründüğünde

İndirim etiketi '50% indirim' gibi, gerçekten yüzde işareti içeren değerleri bulmanız gerekirse ne olur? LIKE '%50%%' yazmak işe yaramaz; çünkü sondaki %, gerçek bir karakter değil joker olarak ele alınır.

SQL'e belirli bir karakterin gerçek metin olarak ele alınacağını bildirmeniz gerekir. ESCAPE yan tümcesinin amacı budur.

ESCAPE Yan Tümcesi

ESCAPE ile bir kaçış karakteri bildirin, ardından gerçek metin olarak ele alınmasını istediğiniz her joker karakterin önüne bu karakteri koyun. Burada ! kaçış karakteridir; dolayısıyla !% gerçek bir yüzde işareti anlamına gelir.

Bu, herhangi bir konumunda gerçek 50% metnini içeren değerleri bulur. Kaçış karakteri isteğe bağlıdır; arama metninizde bulunmayan bir karakter seçin.

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

Gerçek Alt Çizgi Karakterinden Kaçış

Alt çizgiler kullanıcı adlarında ve tanımlayıcılarda gizlenir; kaçışı yapılmamış _ sessizce herhangi bir karakterle eşleşir. Gerçekten 'a_b' ile başlayan e-posta adreslerini bulmak için alt çizgi karakterinden kaçış yapmanız gerekir.

Kaçış yapılmadan 'a_b%' ifadesi 'axb', 'a9b' ve benzeri değerlerle de eşleşirdi. Bu hata canlıya sürekli çıkar; çünkü kaçış yapılmamış sorgu hâlâ makul görünen satırlar döndürür.

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

Büyük/Küçük Harf Duyarlılığı Veritabanına Göre Değişir

LIKE'ın büyük/küçük harfe duyarlı olup olmadığı, motora ve harmanlama ayarına bağlıdır:

  • PostgreSQL: LIKE büyük/küçük harfe duyarlıdır; duyarsız eşleşme için ILIKE kullanın
  • MySQL: sütunun harmanlamasına bağlıdır ve çoğu zaman varsayılan olarak büyük/küçük harfe duyarlı değildir
  • SQL Sunucusu: harmanlama ayarına bağlıdır

Taşınabilir ve açık yaklaşım, her iki tarafı da küçük harfe dönüştürmektir.

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

Gizli Performans Maliyeti

'%son' gibi başında joker karakter bulunan bir ifade, normal B-ağacı dizinini kullanamaz; çünkü dizin öneke göre sıralıdır ve başlangıcı sabitlememişsinizdir. Motor her satırı taramak zorunda kalır.

'son%' ise sondaki joker karakteri olan, sabitlenmiş önekli bir ifadedir ve dizin kullanabilir. Görüşmeciler bir LIKE aramasının neden yavaş olduğunu sormayı sever; yanıt genellikle baştaki % işaretidir.

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

LIKE'ın Ötesinde

LIKE yeterli olmadığında, konuya hakimiyetinizi göstermek için alternatiflerden söz edin:

  • Gerçek düzenli ifadeler için PostgreSQL'de SIMILAR TO ve POSIX düzenli ifadeleri (~, ~*)
  • Büyük serbest metin koleksiyonları için tam metin arama dizinleri
  • Baştaki joker karakteri içeren aramaları hızlandırmak için üçlü gram dizinleri

Bunların adını anmanız, LIKE'ın metin aramasında tavan değil taban olduğunu bildiğinizi gösterir.

Kullanıcı Girdisinden Güvenli LIKE Örüntüleri

Mülakatçılar sıkça şunu sorar: Kullanıcının yazdığı bir terimi sorguyu bozmadan LIKE ile nasıl ararsınız? Belirtmeniz gereken iki risk vardır:

  • Enjeksiyon — değeri parametre olarak bağlayın; ham girdiyi SQL dizesine hiçbir zaman birleştirmeyin.
  • Kaçış uygulanmamış joker karakterler — girdinin kendisi % veya _ içeriyorsa, gerçek karakterlerle eşleşmeleri için bunlara kaçış uygulayın.

Parametreyi bağlayın, ardından sorguda kendi joker karakterlerinizi ekleyin.

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

Hızlı Kontrol

İki joker karakter arasındaki farkı hatırlayın.

Özet

Önemli çıkarımlar:

  • %, sıfır veya daha fazla karakterle; _ ise tam olarak bir karakterle eşleşir
  • Verilerdeki gerçek bir % veya _ karakteriyle eşleşmek için bir ESCAPE karakteri bildirin ve joker karakterin önüne bunu koyun
  • Büyük/küçük harf duyarlılığı motora göre değişir; her iki tarafta da LOWER() kullanmak taşınabilir çözümdür (PostgreSQL'de ILIKE bulunur)
  • Baştaki joker karakter tam taramayı zorunlu kılar; sabitlenmiş bir önek dizin kullanabilir

Kaçışı yapılmamış bir _ sessiz bir hatadır: yine de makul görünen satırları döndürür.

Sıkça Sorulan Sorular

“LIKE, Joker Karakterler ve Kaçış” dersi ücretsiz mi?

Evet — “LIKE, Joker Karakterler ve Kaçış” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“LIKE, Joker Karakterler ve Kaçış” dersinde ne öğreneceğim?

Örüntü eşleştirmeyi, yüzde işareti ile alt çizgi arasındaki farkı ve gerçek joker karakterleri kaçırmayı öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“LIKE, Joker Karakterler ve Kaçış” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. AND/OR Önceliği ve Parantez Kullanımı
  2. BETWEEN, IN ve Dahil Sınırlar
  3. LIKE, Joker Karakterler ve Kaçış
  4. Hesaplanan Değerlere Göre Filtreleme
← SQL Interview Prep Sayfasına Dön