Between deyimi Select ve Where deyimleri ile birlikte kullanılan bir deyimdir. Between deyimi bir veri listesindeki bir alana ait verilerin belli bir alan aralığında, belli bir değer aralığında olanlarının gösterilmesi için kullanabiliriz. Genel olarak tarih aralıklarını listelemekte kullanılır ama tabi bu bir kural değildir, sayısal değerleri de listemek de çok sıklıkla kullanılır, hatta string aralıklarda bile ihtiyaç duyulmaktadır. Kalıp olarak kullanımı şöyledir :
SELECT column1,column2 FROM schema.table WHERE column BETWEEN value1 AND value2;
SELECT deyimi ve sonrası listelenmesini istediğimiz kolonlar daha sonra FROM deyimi ve hangi tablodan veri çekeceğimiz ve sonra WHERE deyimi ve aralık belirtmek istediğimiz kolonun adı ve sonra BETWEEN deyimi ilk değer AND ve sondeğer. Şimdi bir kaç örnek yapıyorum. (AdventureWorks veritabanı üzerinde çalışıyorum)
SELECT CustomerID, SalesOrderID, OrderDate, DueDate, ShipDate, AccountNumber FROM Sales.SalesOrderHeader WHERE OrderDate BETWEEN '2005-07-04' AND '2005-07-31'
Sales.SalesOrderHeader tablosundan OrderDate alanı 2005-07-04 ve 2005-07-31 tarihleri arasında olanları listeledim. Bu tarihlerde dahil.
SELECT CustomerID, SalesOrderID, OrderDate, DueDate, ShipDate, AccountNumber FROM Sales.SalesOrderHeader WHERE CustomerID BETWEEN 27606 AND 27613
Sales.SalesOrderHeader tablosundan CustomerID alanı 27606 ile 27613 arasında olan verileri (bu değerler dahil) listeledim. Listelediğim alanlar, CustomerID, SalesOrderID, OrderDate, DueDate, ShipDate, AccountNumber.
SELECT BusinessEntityID, JobTitle, MaritalStatus, Gender, HireDate, VacationHours FROM HumanResources.Employee WHERE JobTitle BETWEEN 'E' AND 'R'
Şimdi bu son sorguyu açıklama gereği duyuyorum. Bu sorguda E harfi ile başlayan yanil ilk harfi E olanların hepsi dahil olmak üzere E’den R harfine kadar olan verileri listeler. R harfine kadar olan kısmına dikkat. R harfi dahil ama R’nin yanına bir harf geldiğinde bu dahil değil. Sadece R dahil, Ra bile olsa olmaz. Çünkü Ra değeri veya R’nin yanına bir karakter gelen ve sonrasında karakter olan tüm durumlar R’den büyük değerlerdir ve bu aralığa girmezler.
SELECT CustomerID, SalesOrderID, OrderDate, DueDate, ShipDate, AccountNumber FROM Sales.SalesOrderHeader WHERE CustomerID BETWEEN 43670 AND 43660
Bu sorgu sonucunda da hiç bir veri geri dönmez. Çünkü BETWEEN kullanımında her zaman ilk değer ikinci değerden küçük olmalıdır.
Merhaba,
Sistem tarihinden başlangıç zamanına kadar olan sparişlerimi yıl bazında sorgulamak istesem nasıl yapabilirim. Örn.
yıl spariş mik
2019 500
2018 750
2017 600
.
.