Case ifadesi ile sorgu sonucu döndürülen değerlere bir veya daha fazla koşul atanabilmektedir.
Excel’de bulunan IF Else fonksiyonunun SQL tarafındaki eşdeğeri Case When olarak kabul edilir.
Case’e fonksiyon değil de ifade ya da işlev denmesinin sebebi aslında IF fonksiyonu gibi tek başına çalışamamasından kaynaklanmaktadır. Sorgu içinde kullanılması gerekmektedir.
Sorgu içinde SELECT, ORDER BY, HAVING ve GROUP BY gibi birçok farklı komut ile kullanılabilir.
CASE den sonra WHEN THEN ikilemesi en az bir kere mutlaka kullanılmalıdır. Her CASE başlangıcı bir END ile bitmelidir.
ELSE ifadesi kullanılması zorunlu değildir.
ELSE kullanılmadığı zaman, karşılaştırılan değer hiçbir koşulla uyuşmazsa sonucu NULL olarak döndürür. Bu yüzden NULL ifade ihtimali olan durumlarda, sonucu NULL olarak görmek istemiyorsak ELSE kullanılması daha yararlı olacaktır.
Case ifadelerinin Simple Case ve Searched Case olarak bilinen iki formu vardir.
(Syntaxlara eklenilen AS Alias kullanılmak zorunda değildir. Oluşturulan kolonun ismini ifade eder.)
Simple Case
CASE alan
WHEN ifade THEN sonuç1
WHEN ifade THEN sonuç2
…
ELSE sonuçN
END AS Alias
Örnek:
Aşağıdaki örnekte, resimdeki bilgiden yararlanarak RegionId değerlerine göre Description alanını yazması sağlandı.
SELECT TerritoryDescription,RegionID,
CASE RegionID
WHEN 1 THEN ‘Eastern’
WHEN 2 THEN ‘Western’
WHEN 3 THEN ‘Northern’
WHEN 4 THEN ‘Southern’
END AS RegionDescription
FROM Territories
CASE den sonra yazılan alan kontrol edilecek alandır. Burada RegionId değeri kontrol edildiği için o yazmaktadır.
RegionIDd 1 ise, RegionDescription alanında Eastern yazar. İfadenin devamına bakmaz.
Değilse;
RegionID 2 ise, RegionDescription alanında Western yazar. İfadenin devamına bakmaz.
Değilse;
RegionID 3 ise, RegionDescription alanında Northern yazar. İfadenin devamına bakmaz.
Değilse;
RegionID 4 ise, RegionDescription alanında Southern yazar. İfadenin devamına bakmaz.
Değilse;
ELSE ifadesi eklenmediği için NULL yazacaktır.
Örnek 2:
Aşağıdaki resimde görülen örnekte de mantık aynı şekilde işlemektedir.
TitleOfCourtesy alanı Ms. İse ‘W’ yazar. Değilse diğer koşulu kontrol eder.
Mrs. İse ‘W’ yazar. Değilse diğer koşulu kontrol eder.
Mr. İse ‘M’ yazar. Değilse ELSE tarafına düşer ve ‘Unknown ’ yazar.
Searched Case
CASE
WHEN koşul(lar) THEN sonuç
WHEN koşul(lar) THEN sonuç
…
ELSE sonuçN
END AS Alias
Koşul alanlarına Boolen İfadeleri de denir. TRUE ya da FALSE döndüren değerlerdir.
Örnek:
SELECT
TerritoryDescription,RegionID,
CASE
WHEN RegionID=1 THEN ‘Eastern’
WHEN RegionID=2 THEN ‘Western’
WHEN RegionID=3 THEN ‘Northern’
WHEN RegionID=4 THEN ‘Southern’
END AS RegionDescription
FROM Territories
Simple Case de Searched Case gibi çalışmaktadır. Tüm koşulları sırası ile kontrol eder ve karşılayan koşulun THEN ifadesine düşerek belirtilen sonucu döndürür.
Belirgin fark, Searced Case ile birden fazla koşul yazabilme imkanı bulunmaktadır.
Aşağıdaki örnekte Aynı sonucu olan Ms. Ve Mrs. Alanları tek bir When Then aralığında yazılabildi.
Thank you, I have just been looking for information approximately this subject for
ages and yours is the greatest I’ve found out till now.
However, what concerning the bottom line? Are you certain about the source?
BeğenBeğen
Hello,
I am glad to hear this! thank you.
All my articles are a combination of my research and experience.
BeğenBeğen