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 :

SQL IF – ELSE VE EXISTS – NOT EXISTS KULLANIMI

 

Ş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.

screenshot_3

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ı :

screenshot_4

 

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ç :

screenshot_5

 

[raw] [/raw]

 

aynı şekilde update işlemleri sorgulamalar yapabiliriz. Bu yazımızda umarım faydalı olmuştur. — Salih ŞEKER

 

 

 

Print Friendly, PDF & Email

You may also like...

Bir cevap yazın