Joker Karakterler (Wildcards)
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 (kullandığınız programlama dilinden tutun da, işletim sistemine kadar pek çok şey olabilir bu ortam) 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:
Not: Bu arada diğer SQL derslerine buradan ulaşabilirsiniz
Joker Karakter | Açı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) |
Yazı boyunca örnek olarak kullanacağımız Uyeler
tablosu aşağıdaki gibidir.
uye_adi | isim | soyisim | e-posta | cinsiyet |
---|---|---|---|---|
hrzafer | Harun Reşit | Zafer | [email protected] | E |
derya.z | Derya | Zaimoğlu | [email protected] | K |
meryem1990 | Meryem | Arkadaş | [email protected] | K |
eaydin | Emir | Aydın | [email protected] | E |
denizeri | Levent | Denizeri | [email protected] | E |
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_adi | isim | soyisim | e-posta | cinsiyet |
---|---|---|---|---|
meryem1990 | Meryem | Arkadaş | [email protected] | K |
_ 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 'h_zafer'
Sorgunun çıktısı aşağıdaki gibi olacaktır:
uye_adi | isim | soyisim | e-posta | cinsiyet |
---|---|---|---|---|
hrzafer | Harun Reşit | Zafer | [email protected] | E |
Eğer tablomuzda uye_adi alanında hdzafer, hczafer, hazafer 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: Karakter listeleri MySQL’de LIKE ile çalışmıyor. Bunun yerine RLIKE (veya REGEXP) işleci kullanılıyor. Bu işleç bütün Düzenli İfadeler (Regular Expressions) ile çalışıyor.
Herkese Kolay Gelsin
03 Aralık 2010 at 23:58
usta çok açık bir anlatım metodunuz var . internette başka iyi niyetli arkadaşlarda var ama anlatımları (karşılarında bir programcı var da onunla konuşuyor yada sohbet ediyor şeklinde) ilk anlama işinde olanlar için bayagı zor çok teşekkürler
08 Nisan 2011 at 14:56
türkçe 2008 sql kullanıyorum bu ə harfini bir türlü yazmadım bunu bir kod altında yazarak
nasıl yadımcı olabilirsiniz biaze
teşekkürler
10 Ocak 2013 at 13:57
Hocam emeğinize sağlık