SQL Server IF…ELSE Koşul İfadesi: T-SQL Seçme Sorgu Örneği
Neden Koşullu İfadelere ihtiyacınız var?
SQL sunucusundaki koşullu ifadeler, farklı koşullar için farklı mantıklar ve eylemler tanımlamanıza yardımcı olur. İfadede tanımlanan koşullara göre farklı eylemler gerçekleştirmenize olanak tanır. Gerçek hayatta, başka bir faaliyetin veya durumun sonucuna bağlı olarak birçok eylem gerçekleştirirsiniz.
SQL case ifadesinin bazı gerçek zamanlı örnekleri şunlardır:
- Yarın yağmur yağarsa, bir yolculuğa çıkmayı planlayacağım.
- Bulunduğum şehirden uçak biletleri 400 doların altındaysa, o zaman Avrupa'ya tatile gideceğim, aksi takdirde yakınlardaki turistik yerleri tercih edeceğim.
Burada, yukarıdaki Yol gezisi gibi bir eylemin şu olduğunu görebilirsiniz: koşullu bağımlı “Yarın yağmur yağacak mı yağmayacak mı!” etkinliğinin sonucuna göre
Benzer şekilde MS SQL, T-SQL ifadesini koşullu olarak yürütme olanağı da sağlar.
SQL Server'da IF… Else ifadesi
In MS SQL, EĞER…ELSE bir türü olan Koşullu ifade.
Herhangi bir T-SQL ifadesi koşullu olarak çalıştırılabilir. EĞER… BAŞKA.
Aşağıdaki şekilde SQL sunucusunda IF ELSE açıklanmaktadır:
- Koşul şu şekilde değerlendirilirse Doğru, ardından T-SQL ifadeleri ve ardından IF SQL sunucusundaki koşul yürütülecektir.
- Koşul şu şekilde değerlendirilirse Yanlış, ardından T-SQL ifadeleri ve ardından ELSE anahtar kelime yürütülecektir.
- IF T-SQL ifadeleri veya ELSE T-SQL ifadelerinden biri yürütüldüğünde, diğer koşulsuz T-SQL ifadeleri yürütülmeye devam eder.
IF… Else SQL'de sözdizimi ve kurallar
Sözdizimi:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Kurallar:
- Şart şu olmalı Boole İfadesiYani koşulu değerlendirildiğinde Boolean değeriyle sonuçlanır.
- IF ELSE ifadesi SQL koşullu olarak tek bir T-SQL ifadesini veya T-SQL ifadeleri bloğunu işleyebilir.
- İfade bloğu BEGIN anahtar sözcüğüyle başlamalı ve END anahtar sözcüğüyle bitmelidir.
- BEGIN ve END kullanmak, SQL sunucusunun yürütülmesi gereken ifade bloğunu tanımlamasına ve onu IF…ELSE T-SQL bloğunun parçası olmayan geri kalan T-SQL ifadelerinden ayırmasına yardımcı olur.
- BAŞKA isteğe bağlıdır.
Boole İfadesindeki tek sayısal değere sahip IF…ELSE.
Durum: DOĞRU
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Durum: YANLIŞ
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Varsayım: Aşağıdaki gibi bir tabloya sahip olduğunuzu varsayalım 'Guru99' aşağıda gösterildiği gibi iki sütun ve dört satırla:
Kullanacağız 'Guru99' diğer örneklerdeki tablo
Boole İfadesindeki değişkenle IF…ELSE.
Durum: DOĞRU
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Durum: YANLIŞ
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
IF…ELSE ile Başlangıç Sonu
Durum: DOĞRU
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Durum: YANLIŞ
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Başka Yok ile IF ifadesi
SQL'de bir IF ifadesini ELSE kısmı olmadan kullanabilirsiniz. ELSE kısmının isteğe bağlı olduğunu belirttiğimizi unutmayın. Örneğin:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Aşağıdakiler yazdırılır:
Yanlış koşulun yürütülmesi hiçbir çıktı vermeyecektir. Aşağıdaki sorguyu göz önünde bulundurun
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Sonuç o
İç İçe IF…Else İfadeleri
diğer aksine Programlama dilleriSQL'de bir IF ELSE koşulunun içine ELSE IF ifadesi ekleyemezsiniz. Bu nedenle SQL sorgu ifadelerinde IF ELSE'i iç içe kullanabilirsiniz. Aşağıda gösterilmiştir:
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
- Bu örnekte, @age değeri 18'in altındaysa kod reşit olmayanları yazdıracaktır.
- Aksi taktirde ELSE kısmı çalıştırılacaktır. ElSE kısmında iç içe bir IF…ELSE bulunur.
- @age değeri 50'nin altındaysa, bu, Siz 50'nin altındasınız şeklinde yazdıracaktır. Bu koşullardan hiçbiri doğru değilse, kod Kıdemli olarak yazdıracaktır.
ÖZET
- Değişkenler yer tutucu görevi gören nesnelerdir.
- İfade bloğu BEGIN anahtar sözcüğüyle başlamalı ve END anahtar sözcüğüyle bitmelidir.
- IF… ELSE ifadesinde Else kullanımı isteğe bağlıdır
- SQL IF ELSE koşulunu başka bir IF…ELSE ifadesine yerleştirmek de mümkündür.