Merhabalar. Bugünkü yazımda sizlere “LIKE” operatörünün kullanımından bahsedeceğim.
LIKE operatörünün amacı, bir alanda yer alan bilgileri belli bir düzene göre aramaktır. Metin türündeki alanlardaki ifadeleri aramak için kullanılır. Yani; eğer tablolarımızdaki kayıtları belirlediğimiz kriterlere göre seçmek istiyorsak o zaman LIKE işlecini kullanarak amacımıza uygun aramalarımızı gerçekleştirebiliriz.
SQL LIKE operatörünün sözdizimi aşağıdaki gibidir:
SELECT alan_adları FROM tablo_adı WHERE sorgulanacak_alan_adı LIKE sorgulama_degeri
SQL sorgularında kullanmış olduğumuz LIKE operatörü, WHERE ifadesi ile birlikte kullanılır. Sorguya karşılık gelen özelliklerin kayıtların olup olmadığı bu şekilde kontrol edilir ve sonuçlar çekilerek karşımıza çıkar.
Örneğin tablo içerisinde “ismi ‘E’ ile başlayan kayıtları bulmak istediğimizde, yaşadığı şehrin son 2 harfi “er” ile biten kayıtları görmek istediğimizde vb.” örneklerde LIKE operatörüne ihtiyaç duyarız. Bu tarz örneklere geçmeden önce LIKE operatörü ile kullanılan joker karakterlere giriş yapalım.
SQL Joker Karakterler (WildCards)
Joker karakterler yani wildcards; tekrarlanan durum ya da işlemlerin tek seferde tanımlanmasını sağlayan özel karakterlerdir. Bir ya da birden daha fazla harf yerine geçebilirler ve sorguya bağlı olarak kullanılmaları gerekir. Fakat sadece LIKE operatörü ile kullanılırlar.
Wildcard | Açıklama |
% | Birden fazla harf ve rakamın yerini tutar. |
_ (alt çizgi) | Sorguda bir karakteri temsil etmek için kullanılan karakterdir. |
[karakterlistesi] | Herhangi bir harf yerine geçecek harf veya harfleri belirtir. |
[^karakterlistesi] | Karakter listesi dışındaki karakterleri içeren sorgu sonuçları için kullanılır. |
[!karakterlistesi] | Karakter listesi dışındaki karakterleri içeren sorgu sonuçları için kullanılır. |
Joker karakterlerin kullanımı farklı veritabanlarında değişkenlik gösterebilir. Access veritabanında “_” ifadesi yerine “?” kullanılır. SQL Server için kullanılan “%” ifadesi, Access’te “*” olarak geçer. Ayrıca SQL Server’da tek tırnakla kullanacağımız sabit metinleri Access’te çift tırnak olarak kullanmak gerekir.
Şimdi joker karakterlere ait bazı kullanımları inceleyerek örneklere bakalım.
SQL LIKE Örnekleri
Sorgularda kullanacağımız tablo personel tablosu aşağıdaki gibidir:
tablo: personel
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
1 | Ezgi | Kahraman | Bahçelievler mah. | İstanbul | 45 |
2 | Kemal | Uslu | Eskiler mah. | Kahramanmaraş | 27 |
3 | Pınar | Kataman | Papatya mah. | Manisa | 36 |
4 | Zeynep | Çanlı | Yenisokak cad. | Çanakkale | 25 |
5 | Sinan | Sarıoğlu | Çorak mah. | İstanbul | 40 |
Örnek-1: Soyadı “K” harfi ile başlayan personelleri seçelim.
SELECT * FROM personel
WHERE musteri_ soyad LIKE 'K%'
Sorgu çıktısı aşağıdaki gibi olur:
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
1 | Ezgi | Kahraman | Bahçelievler mah. | İstanbul | 45 |
3 | Pınar | Kataman | Papatya mah. | Manisa | 36 |
Sözdiziminde kullanmış olduğumuz ‘K%’ ifadesi, “kelimenin ilk harfi K ile başlasın ve diğer harfleri herhangi bir harflerle devam edebilir” anlamına gelir.
Örnek-2: Soyadının son harfi “u” olan personelleri seçiniz:
SELECT * FROM personel
WHERE musteri_ soyad LIKE '%u'
Bu halde sorgumuz şu şekilde çekilir:
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
2 | Kemal | Uslu | Eskiler mah. | Kahramanmaraş | 27 |
5 | Sinan | Sarıoğlu | Çorak mah. | İstanbul | 40 |
Örnek-3: Bulundukları şehrin içerisinde “bul” ifadesi geçmeyen personelleri listeleyiniz:
SELECT * FROM personel
WHERE sehir NOT LIKE '%bul%'
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
2 | Kemal | Uslu | Eskiler mah. | Kahramanmaraş | 27 |
3 | Pınar | Kataman | Papatya mah. | Manisa | 36 |
4 | Zeynep | Çanlı | Yenisokak cad. | Çanakkale | 25 |
Örnek-4: Bulundukları şehrin içerisinde “man” ifadesi geçen personelleri listeleyiniz:
SELECT * FROM personel
WHERE sehir LIKE ‘%man%’
Sorgu sonucu:
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
2 | Kemal | Uslu | Eskiler mah. | Kahramanmaraş | 27 |
3 | Pınar | Kataman | Papatya mah. | Manisa | 36 |
Örnek-5: Personel tablosunda şehir ismi “İ” ile başlayan ve yaşı 45’ten küçük olan kayıtları listeleyiniz.
SELECT * FROM personel
WHERE adi LIKE 'İ%' AND yas<45
Sorgu sonucunda kayıtlar aşağıdaki gibi döner:
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
5 | Sinan | Sarıoğlu | Çorak mah. | İstanbul | 40 |
Örnek-6: Sondan ikinci harfi a olan müşteri isimlerini listeleyiniz.
Bu sorgunun başında harfin ne olduğu belli olmadığı için %, sonrasında a harfi, son iki karakter içinde _ (alt tire) kullanılmak gerekir.
SELECT * FROM personel
WHERE musteri_ad LIKE '%a_'
Sorgumuz sonucunda çekilen kayıtlar aşağıdaki tabloda verilmiştir.
id | musteri_ad | musteri_ soyad | adres | sehir | yas |
2 | Kemal | Uslu | Eskiler mah. | Kahramanmaraş | 27 |
3 | Pınar | Kataman | Papatya mah. | Manisa | 36 |
5 | Sinan | Sarıoğlu | Çorak mah. | İstanbul | 40 |
Örnek-7: Yaşadığı şehrin son harfi L ve Ş ile bitmeyen personelleri listeleyiniz.
SELECT * FROM personel
WHERE sehir LIKE '%[^LŞ]'
Örnek-8: İsmi E,K veya Z ile başlayan öğrencileri listeleyiniz.
SELECT * FROM personel
WHERE musteri_ad LIKE '[EKZ]%'
Herkese iyi çalışmalar dilerim. Tekrar görüşmek üzere.
Yorum bırakın