SQL Serisi – 3: Gelişmiş Veri Filtreleme; LIKE, IN ve BETWEEN Operatörleri ile Esnek Sorgulama

Mayıs 29, 2026 Doğan Kalelioğlu 8 dk okuma

İlişkisel veritabanı yönetim sistemlerinde (RDBMS) verileri = veya != gibi tam eşleşme operatörleriyle filtrelemek çoğu zaman yeterli olmaz. Gerçek dünya senaryolarında; kullanıcıların arama kutularına yazdığı kısmi metinleri yakalamak, belirli bir sayısal veya kronolojik aralığı süzmek ya da dinamik bir liste içerisindeki değerleri tek seferde sorgulamak gerekir.

Serimizin ilk iki makalesinde CRUD döngüsünü, WHERE tümcesini ve mantıksal operatörleri incelemiştik. Bu yazıda ise veri analizinde esnekliği artıran, sorgu yazımını kısaltan ve optimizasyon sağlayan üç kritik operatörü ele alacağız: LIKE, IN ve BETWEEN.

1. Karakter Kalıbı Eşleştirme: LIKE Operatörü

LIKE operatörü, metinsel (String) veriler içerisinde tam bir eşitlik aramak yerine, belirli bir karakter kalıbını (Pattern) taramak için kullanılır. Bu operatörle birlikte arama esnekliğini sağlayan iki temel joker karakter (wildcard) kullanılır:

  • % (Yüzde İşareti): Sıfır veya daha fazla karakterin yerini tutar.
  • _ (Alt Çizgi): Sadece tek bir karakterin yerini tutar.

A) İki Taraflı Joker (%Arama%)

Aranan kelimenin metnin neresinde geçtiğini önemsemeden, içerisinde barınması durumunda kaydı getirmek için kullanılır.

-- Ürün adı içerisinde 'Akıllı' kelimesi geçen tüm kayıtları listeler
SELECT UrunID, UrunAdi, Fiyat 
FROM Urunler 
WHERE UrunAdi LIKE '%Akıllı%';

B) Belirli Bir Karakter ile Başlayan (Arama%) veya Biten (%Arama)

Metnin sadece başlangıç köklerine ya da sadece son harflerine göre filtreleme yapar.

-- Telefon numarası '0532' ile başlayan kullanıcıları filtreler
SELECT KullaniciID, Ad, Soyad, Telefon 
FROM Kullanicilar 
WHERE Telefon LIKE '0532%';

C) Tek Karakter Sabitleme (_)

Metnin uzunluğunu ve belirli basamaklarındaki karakterleri kesinleştirmek istediğimiz durumlarda harika bir çözümdür.

-- İlk karakteri ne olursa olsun ikinci ve üçüncü karakteri 'AR' olan 
-- ve devamı önemli olmayan ürün kodlarını listeler (Örn: MARS, PARDUS)
SELECT UrunID, UrunKodu 
FROM Urunler 
WHERE UrunKodu LIKE '_AR%';

2. Küme İçinde Filtreleme: IN Operatörü

Birden fazla OR (Veya) mantıksal operatörü kullanarak yazacağımız uzun, karmaşık ve okunabilirliği düşük sorguları optimize etmek için IN operatörünü kullanırız. IN, belirtilen bir kolonun değerinin, parantez içinde verilen kümedeki elemanlardan herhangi biriyle eşleşip eşleşmediğini kontrol eder.

Uygulama Örnek Senaryosu:

E-ticaret sitemizde sadece ‘Elektronik’, ‘Giyim’ ve ‘Kitap’ kategorisindeki ürünleri izole etmek istediğimizde OR yerine çok daha temiz ve performanslı bir sentaks sunar:

-- Belirtilen kategorilere ait ürünleri filtreler
SELECT UrunID, UrunAdi, Kategori, Fiyat 
FROM Urunler 
WHERE Kategori IN ('Elektronik', 'Giyim', 'Kitap');

Not: Eğer bu liste dışındaki ürünleri listelemek isterseniz, operatörün başına NOT kelimesini ekleyerek NOT IN şeklinde kullanabilirsiniz.

3. Aralık Belirleme: BETWEEN Operatörü

Belirli iki değer arasındaki (başlangıç ve bitiş değerleri dahil olmak üzere) kayıtları listelemek için BETWEEN operatörü kullanılır. Sayısal (Numeric) verilerin yanı sıra kronolojik (DateTime) sorgulamalarda da sıklıkla tercih edilir.

A) Sayısal Aralık Sorgulama

-- Fiyatı 1000 TL ile 5000 TL arasında (1000 ve 5000 dahil) olan ürünleri getirir
SELECT UrunID, UrunAdi, Fiyat 
FROM Urunler 
WHERE Fiyat BETWEEN 1000 AND 5000;

B) Tarihsel Aralık Sorgulama

Veritabanlarında tarih formatı genellikle YYYY-MM-DD (Yıl-Ay-Gün) yapısındadır. Belirli bir zaman dilimindeki siparişleri çekmek için sorgu şu şekilde kurgulanır:

-- 2026 yılının Ocak ayı içerisinde verilen tüm siparişleri listeler
SELECT SiparisID, MusteriID, SiparisTarihi, ToplamTutar 
FROM Siparisler 
WHERE SiparisTarihi BETWEEN '2026-01-01' AND '2026-01-31';

Karmaşık Senaryo: Operatörlerin Kombinasyonu

Gerçek projelerde ve iş analitiği süreçlerinde bu operatörler AND / OR mantığıyla birbirine bağlanarak anahtar sonuç kümeleri (Result Set) elde edilir.

Senaryo: Kategori bilgisi ‘Elektronik’ veya ‘Beyaz Eşya’ olan, fiyatı 5.000 TL ile 20.000 TL arasında yer alan ve ürün adının içinde ‘Siyah’ kelimesi geçen ürünleri, fiyata göre en yüksekten en düşüğe sıralayalım:

SELECT UrunID, UrunAdi, Kategori, Fiyat 
FROM Urunler 
WHERE Kategori IN ('Elektronik', 'Beyaz Eşya') 
  AND Fiyat BETWEEN 5000 AND 20000 
  AND UrunAdi LIKE '%Siyah%'
ORDER BY Fiyat DESC;

Özet

LIKE, IN ve BETWEEN operatörleri, SQL sorgularınızın esnekliğini artırırken aynı zamanda kodun okunabilirliğini (Readability) en üst seviyeye çıkarır. Büyük veri kütleleri üzerinde çalışırken doğru indeksleme stratejileriyle birleştiğinde bu operatörler, veri tabanı sorgu optimizasyonlarının vazgeçilmez yapı taşlarıdır.

Serimizin bir sonraki teknik makalesinde, verileri satır bazlı filtrelemekten çıkıp grup bazlı özetlemeye geçeceğiz ve SQL’in gerçek analitik gücünü temsil eden Toplama Fonksiyonları (COUNT, SUM, AVG) ile GROUP BY / HAVING mimarisini inceleyeceğiz.