T-SQL’de CASE ifadesi, programlama dillerindeki “if-else” yapısına benzer şekilde koşullu mantık uygulamamızı sağlar. Şimdi örnekler üzerinden konunun genel yapısını görelim.
Aşağıdaki sorgumuzda kullanıcıların Ünvan ekinin yanında Ms. veya Mrs. ise Kadın, Mr. ise Erkek yazmasını sağlayacağız. İlk olarak aşağıdaki sorguda tablomuza select çekip genel durumu görelim.
select Adi,SoyAdi,UnvanEki from Personeller

Şimdi yukarıdaki belirttiğimiz CASE-WHEN-THEN-ELSE-END kavramlarıyla kodumuzu yazalım.
select Adi,SoyAdi,
CASE
WHEN UnvanEki='Ms.' or UnvanEki='Mrs.' THEN 'KADIN'
WHEN UnvanEki='Mr.' THEN 'ERKEK'
ELSE UnvanEki
END
from Personeller
------------
select Adi,SoyAdi,
CASE UnvanEki
WHEN 'Ms.' THEN 'KADIN'
WHEN 'Mr.' THEN 'ERKEK'
ELSE 'BelliDeğil'
END as Cinsiyet
from Personeller

WHEN UnvanEki='Ms.' or UnvanEki='Mrs.'
ve WHEN UnvanEki='Mr.'
kısımlarını if blokları gibi düşünebiliriz. Bu ifadeyi sağladıktan sonra THEN ifadesi çalıştırılır. ELSE ifadesi sorgumuz hiçbir şartı sağlamıyorsa kolon değerinin veya manuel bir değer set edebiliriz.
Bir başka örneğimizde ise ürünler tablosunda ürünlerin fiyatına göre hangi ülke ürünü olduğunu belirleyeceğiz.
select UrunID,UrunAdi,BirimFiyati,
case
when BirimFiyati between 0 and 50 then 'çin malı'
when BirimFiyati between 50 and 100 then 'amerikan malı'
when BirimFiyati between 100 and 150 then 'avrupa malı'
when BirimFiyati >150 then 'türk malı'
else 'belirsiz'
end
from Urunler order by UrunID

Yukarıdaki komutumuzda end ifadesinden sonra alias ifadesi verilerek yeni eklenecek kolona isim verebiliriz.

Çok karmaşık CASE ifadeleri sorgu performansını düşürebilir. Özellikle büyük veri kümelerinde dikkatli kullanılmalıdır. Çok fazla iç içe geçmiş CASE ifadeleri kodun bakımını zorlaştırabilir.
T-SQL’de CASE WHEN THEN ELSE END yapısı, veritabanı geliştiricilerinin en güçlü araçlarından biridir. Doğru kullanıldığında kod okunabilirliğini artırır, veri dönüşümlerini kolaylaştırır ve raporlama ihtiyaçlarını karşılar. Ancak, performans etkileri ve bakım zorlukları nedeniyle dikkatli kullanılmalıdır. Basit senaryolarda CASE ifadeleri tercih edilirken, çok karmaşık mantık gerektiren durumlarda saklı yordamlar veya uygulama kodu kullanmayı düşünmek daha iyi olabilir.
Başka makalede görüşmek dileğiyle..
“Eğer Allah seni bir zarara uğratırsa, onu kendisinden başka giderecek yoktur. Ve eğer sana bir hayır verirse, (bunu da geri alacak yoktur). Şüphesiz O her şeye kadirdir.” En’am Suresi; 17. Ayet