like etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
like etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

28 Haziran 2015 Pazar

Temel SQL Dersi 8: LIKE Elemanı 2



LIKE Elemanı 2

Joker Karakterler
Bir veya birden fazla karakterin yerine geçebilen karakterlere joker karakter diyoruz. Aslında joker karakter kavramı bilgisayar dünyasında sıkça kullanılan bir kavramdır. Ortama göre gösterimde ufak tefek değişiklikler olsa da genel mantığı aynıdır. SQL dilinde joker karakterleri yalnızca LIKE işleci ile birlikte kullanıyoruz. SQL için tanımlanmış joker karakterler aşağıdaki gibidir:
Joker KarakterAçıklama
% (MS Access için * kullanılır)Sıfır, bir veya daha fazla sayıda karakterin yerine geçebilir.
_ (MS Access için ? kullanılır)Bir adet karakterin yerine geçebilir.
[liste]Listedeki karakterlerden herhangi biri
[^liste]Veya
[!liste]
Listedede olmayan karakterlerden  herhangi biri Ya da listede olan karakterlerden hiçbirisi. (iki açıklama da aynı kapıya çıkıyor)

Tablomuzu çağıralım;
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE
derya.zDeryaZaimoğluderya.z@derya.comK
meryem1990MeryemArkadaşmeryem.a@meryem.comK
emre.aEmreAydınemre.a@emre.comE
levent.dLeventDenizlevent.d@levent.comE


Bir önceki yazıda  % Joker karakterinin kullanımına dair örnekler yapmıştık. Bir örnek daha yapalım.
Adı “M” ile başlayıp “m” ile biten üyeleri görmek istersek:
SELECT * FROM uyeler
WHERE isim LIKE 'M%m'
Sorgumuzun çıktısı aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet
meryem.aMeryemArmeryem.a@meryem.comK


_ veya ? Joker karakteri
Bu karakter standart SQL için “_” (alt-tire) MS Access için de “?” olarak tanımlanmıştır. Ben örneklerde “_” olarak kullanacağım.
Şimdi aşağıdaki sorguyu ve çıktısını inceleyelim:
SELECT * FROM uyeler
WHERE uye_adi LIKE 'osman_e'
Sorgunun çıktısı aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE


Eğer tablomuzda uye_adi alanında osmanRe, osman+e, osman5e gibi kayıtlar olsaydı, bunlar da bu sorgudan dönen tabloda yer alacaklardı.
LIKE ‘_a_’  : Üç harfli ortadaki harfi “a” olanlar.
LIKE ‘ m_s_n’ : mısın, musun, müsün veya muson gibi bir çok kelime bu desene uyuyor. Ancak muusun gibi bir kelime bu desene uymaz. Bu karakter yerine yalnızca bir adet karakter gelebileceğini tekrar hatırlatalım.
Karakter Listeleri
Karakter listeleri ise yukarıdaki işlemleri yalnız bir grup karakter için tanımlamak istediğimizde kullanılır:
LIKE ‘c[ai]n': Bu desen can ve cin kelimelerini kapsar.
Örneğin ismi erhan, ercan, erkan veya erman olan üyeleri getirmek isteseydik:
SELECT * FROM uyeler
WHERE uye_adi LIKE 'er[hckm]an'
sorgusu işimizi görürdü. Adı E veya K harfi ile başlamayan üyeleri seçmek isteseydik:
SELECT * FROM uyeler
WHERE uye_adi LIKE '[^EK]%'
sorgusu yeterli olurdu. Aynı sorguyu Access için yazmak istesek LIKE’tan sonraki kısım ‘[!EK]*’ şeklinde olacaktı.
Önemli Not: MySQL’de LIKE  yerine RLIKE (veya REGEXP) işleci kullanılıyor.

Temel SQL Dersi 8: LIKE Elemanı 1





LIKE Elemanı 1

Like (layk diye okunur) kelimesinin buradaki anlamının “gibi” olduğunu en baştan bilirsek gerisini anlamamız çok daha kolay olacaktır.
LIKE işleci (operatörü) belirtilen özelliklere uygun metinlerin bulunması için kullanılan, oldukça faydalı ve sık kullanılan bir işleçtir. Bu yüzden konunun üzerinde ayrıntılı olarak duracağım.
SQL LIKE Sözdizimi (Syntax)
SELECT kolon_adı(ları)
FROM tablo_adı
WHERE kolan_adı LIKE desen (pattern)
Yukarıda geçen desen (pattern) kavramını örneklerden sonra daha iyi anlayacaksınız.
Örnek sorgularımız için kullanacağımız Uyeler tablosu:
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE
derya.zDeryaZarderya.z@derya.comK
meryem.aMeryemArmeryem.a@meryem.comK
emre.aEmreAydınemre.a@emre.comE
levent.dLeventDenizlevent.d@levent.comE


Örnek-1: Soyadı “Z” harfi ile başlayan üyeleri seçmek istiyoruz
SELECT * FROM uyeler 
WHERE soyisim LIKE 'Z%'
Sorgumuzun çıktısı aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet





derya.zDeryaZaimoğluderya.z@derya.comK


Burada desen olarak Z% ifadesini kullandık. Ve bu ifadeyi tek tırnak içerisinde yazdık. Bu desenin anlamı avamca “ilk harfi büyük Z olmalı gerisi ise herşey olabilir” demek.
Örnek-2: Adının son harfi “t” olan üyeleri seçelim:
SELECT * FROM uyeler
WHERE isim LIKE '%t'
Sorgumuzun çıktısı aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet





levent.dLeventDenizlevent.d@levent.comE

Örnek-3: İsminin içerisinde “er” ifadesi geçen üyeleri bulalım:
SELECT * FROM uyeler
WHERE isim LIKE '%er%'
Sorgumuzun çıktısı aşağıdaki gibi olacaktır:
uye_adiisimsoyisime-postacinsiyet
derya.zDeryaZarderya.z@derya.comK
meryem.aMeryemArmeryem.a@meryem.comK


‘%’ karakterinin sıfır, bir yada daha çok karakterin yerine geçebilen bir joker karakter olduğu herhalde örneklerden anlaşılmıştır.
Örnek-4: Şimdi de isminin içerisinde “er” ifadesi geçmeyen üyeleri bulalım:
SELECT * FROM uyeler
WHERE isim NOT LIKE '%er%'
uye_adiisimsoyisime-postacinsiyet
osman.eOsmanErolosman.e@osman.comE
emre.aEmreAydınemre.a@emre.comE
levent.dLeventDenizlevent.d@levent.comE

Görüldüğü gibi NOT ifadesi seçimi tersine çevirmek için yeterli oluyor.
Buraya kadar LIKE operatörüne genel bir giriş yapmış olduk. Bir sonraki yazıda LIKE ile joker karakterlerin kullanımına ayrıntılı olarak bakacağız.