SQL CASE – WHEN – THEN YAPISININI KULLANIMI
Bu yazımda MSSQL de CASE yapısının nasıl kulanıldığını örneklerle açıklayacağım . CASE yapısı programlama dillerinde ki şart ifadelerinde ki switch case e hemen hemen denk gelmektedir .CASE WHEN işlemlerinde sonuçların gösterimi ile alakalı işlemler yapılırken kullanılmaktadır. yani bu tür işlemlerde çok fazla IF-ELSE kullanmak yerine CASE – WHEN – THEN yapısını kullanmak hem kısa hemde daha kolay bir yol olacaktır.
IF-ELSE kullanımı hakkında bilgi almak için linkteki yazımı inceleyebilirsiniz :
Şimdi CASE yapısının çalışma sistemini açıklamaya çalışayım :
CASE ‘kontrol yapılacak sütun’
WHEN karşılaştırılacak değer 1 THEN şart sağlanırsa geri dönücek olan değer
WHEN karşılaştırılacak değer 2 THEN şart sağlanırsa geri dönücek olan değer
ELSE Hiçbir şart sağlanmazsa geri dönücek değer END AS dönüş değerlerinin sütununa verilecek isim
Örnek :
PlayerNames adlı tablomuz var.
Tablomuzdaki oyunculardan ülkesi ‘Turkey’,’Spain’,’France’,’Germany’,’Austria’,’Ukraine’ olanları getiricez ve bunların ülkelerinin yanına ülke isimlerinin kısa adlarını yazacağız fakat ‘Austria’,’Ukraine’ için tanımlama yapmıyacağız eğer tanımlı değilse Diğer yazacak ve sütünumuzun isimide KISA AD olacak.
-- SELECT sName,sCountryName, CASE WHEN sCountryName = 'Turkey' THEN 'TR' WHEN sCountryName = 'Spain' THEN 'İSP' WHEN sCountryName = 'France' THEN 'FR' WHEN sCountryName = 'Germany' THEN 'ALM' ELSE 'Diğer' END AS 'KISA AD' FROM PlayerNames WHERE sCountryName IN ('Turkey','Spain','France','Germany','Austria','Ukraine') --
Ekran çıktısı :
Gördüğünüz gibi tanımlı olan değerler için kısa adlarını yazdı olmayanlar için Diğer yazdı.
[raw] [/raw]
Farklı bir örnek daha yapalım :
iId alanımızdaki id lerin kontrolünü sağlayalım 500 den küçükse 1 büyükse 2 ikisinde dışındaysa yani 500 ise 0 yazacak.
-- SELECT sName,sCountryName,iId, CASE WHEN 500 > iId THEN 1 WHEN iId > 500 THEN 2 ELSE 0 END AS 'DEGER' FROM PlayerNames --
Sonuç :
[raw] [/raw]
aynı şekilde update işlemleri sorgulamalar yapabiliriz. Bu yazımızda umarım faydalı olmuştur. — Salih ŞEKER —