BETWEEN işleci adından da anlaşılacağı üzere bir alanın değerinin iki değer arasında olup olmadığına dair koşul tanımlamak istediğimizde kullanılır. (garip bir cümle oldu. farkındayım) Örneğin “yaşı 20 ile 30 arasında olanlar” gibi bir koşulu SQL ile yazabilmek için BETWEEN işlecini kullanırız. Kullanımı oldukça basit olan bu işleç için hemen bir kaç örnek verelim.
Örnekler için aşağıdaki personel tablosunu kullanacağız.
Not: Bu arada diğer SQL derslerine buradan ulaşabilirsiniz
per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
---|---|---|---|---|---|---|---|
1 | Ahmet | Yılmaz | 20 | E | Ankara | Türkiye | 2000 |
2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
3 | Ayşe | Can | 23 | K | İstanbul | Türkiye | 2500 |
4 | Fatma | Ak | 35 | K | Ankara | Türkiye | 2800 |
5 | John | Smith | 45 | E | New York | ABD | 3500 |
6 | Ellen | Smith | 40 | K | New York | ABD | 3000 |
7 | Hans | Müller | 30 | E | Berlin | Almanya | 4000 |
8 | Frank | Cesanne | 35 | E | Paris | Fransa | 3700 |
9 | Abbas | Demir | 26 | E | Adana | Türkiye | 1500 |
10 | Hatice | Yılmaz | 26 | K | İstanbul | Türkiye | 3000 |
Sorgu: Yaşı 20 ile 26 arasında olan personellerin isim, soyisim ve yaş bilgileri.
SELECT isim, soyisim, yas FROM personel WHERE yas BETWEEN 20 AND 26
Sorgunun çıktısı aşağıdaki gibi olacaktır:
isim | soyisim | yas |
---|---|---|
Ahmet | Yılmaz | 20 |
Mehmet | Efe | 22 |
Ayşe | Can | 23 |
Abbas | Demir | 26 |
Hatice | Yılmaz | 26 |
Burada sonuç kümesine dikkat edecek olusanız. Klasik “20 ve 26 da dahil mi” sorusuna da cevap almış olacaksınız. Ancak bu MySQL için böyle. Başka veritabanı sistemlerinde farklı olabilir. Kodları yalnızca MySQL ile deniyorum. Bunu anlamanın en iyi yolu çalıştığınız VT üzerinde denemek.
Sorgu: İsimleri Ahmet ile Fatma arasında olanlar (kulağa ilginç geliyor ama aslında sadece alfabetik sıralama.)
SELECT isim, soyisim, yas FROM personel WHERE isim BETWEEN 'Ahmet' AND 'Fatma'
isim | soyisim | yas |
---|---|---|
Ahmet | Yılmaz | 20 |
Ayşe | Can | 23 |
Fatma | Ak | 35 |
Ellen | Smith | 40 |
Dikkat: Burada ‘Ahmet’ ve ‘Fatma’ yerine ‘ahmet’ ve ‘fatma’ yazsaydık, sorgumuz boş küme döndürürdü. ‘A’ ve ‘a’ sembolleri farklı değerler ifade ediyor. Başka bir ifade ile küçük harfler ile büyük harfler farklı iki grup teşkil ediyorlar. Bu arada Türkçe karakterler de (doğrusu yalnızca çığöşü değil İngiliz alfabesinde olmayan tüm karakterler) genelde bu grupların sonunda yer alıyor.
Örneğin ORDER BY ile isme göre sıralama yaptığınızda Ç ile başlayan ismin C ile başlayanlardan sonra değil de Z’den sonra geldiğini görürseniz saşırmayın. Elbette bunu düzeltmenin de yolları var ama ileriki konularda değineceğim inş.
BETWEEN işlecini sayısal (INTEGER) ve metin (VARCHAR) değerlerin yanında tarih (DATE) tipindeki değerler ile de kullanabileceğimizi hatırlatalım.
Herkese Kolay Gelsin
26 Kasım 2013 at 11:24
Mükemmel anlatmışssınız tekrar teşekkürler,
>> BETWEEN işlecini sayısal (INTEGER) ve metin (VARCHAR) değerlerin yanında tarih (DATE) tipindeki değerler ile de kullanabileceğimizi hatırlatalım.Bu cümleden anladığım kadarıyla 2 defa BETWEEN kullanacağız herhalde çünkü bir BETWEEN’de sadece kendi tip özelliğini taşıyan bir koşul yapıyoruz ve o koşullar altında derken başlangıç ve bitiş aynı tip özellikte olmalı diye düşünüyorum.Mesela şu saatler arası derken saatleri yazıyoruz.Ve ya 2.5 ile 3.5 başarı ortalaması arasında olan öğrenciler gibi.Date,int,varchar olarak düşünüyorum yani 3 tipten kaç tane kullanırsak o kadar BETWEEN gelir?
Atıyorm, varchar ve int için bunları bi grup olarak düşünürsek “tip” olarak grup diyeblrm:) 1.grup varchar için 1 tane BETWEEN 2.grup int için de BETWEEN yapmak zorundayız değil mi ? Tabi her grup arasında “and” olmak şartıyla?
İyi çalışmalar, Saygılar!
26 Kasım 2013 at 11:37
Bu arada case sorgusunu da bu sayfayı okuyucularla başlamak isterim.
Kısa örnekle hemen açıklayabilirim.Bir öğrenci düşünün ve de sınavdan alacağı notları.Tabi bu notları int den varchar a dönüştürmek için case i kullanabiliriz.Örneğin,
select Öğrencinin numarası,
(case ( case when Not < 1.5 then 'E '
when Not < 2.5 then 'D '
when Not < 3.5 then 'C '
when Not < 4.0 then 'B '
else 'N5 ' end)
from sınav;
Not:Sadece bu sorgu altında 2 tabele mevcut (Öğrenciler ve Sınav). Sınav tabelesi başlığı altında da öğrencilere ait "Not" (attribute) u vardır.
01 Aralık 2015 at 07:47
Gerçekten çok güzel paylaşımlar ellerinize sağlık taksim resim kursu olarak sql e giriş yapmaktayım ve sitenizdeki sorgular harika …
28 Ekim 2017 at 08:38
BETWEEN AND, tüm ortamlada exclusive olarak kullanılıyor. Yani sınırlar dahil.