MSSQL 2012 ile Gelen 2 Yeni Mantıksal Fonksiyon: CHOOSE ve IIF


Merhaba Arkadaşlar,

Önceki yazımda MSSQL 2012 ile gelen tarih ve zaman fonksiyonlarından bahsetmiştim. Bu yazımda ise CHOOSE ve IIF mantıksal fonksiyonlarından bahsedeceğim.

CHOOSE Fonksiyonu

Tanım: Parametre olarak bir dizi değer ve pozisyon verilir. Gösterilen pozisyondaki değeri döndürür.

Söz Dizimi: CHOOSE([Pozisyon], [Değer 1], [Değer 2], …[Değer N])

Pozisyon olarak ondalıklı sayı verilmesi durumunda int gibi işlem görür.

Örnek Kullanımı:

SELECT CHOOSE(1,’Mahmut Can’,’Sözeri’) => Mahmut Can

SELECT CHOOSE(6,10,20,30,40,50,60,70,80,90,100) => 60

SELECT CHOOSE(2.1,’Mahmut’, ‘Can’,’Sözeri’) => Can

Dikkat:

  • Pozisyon numarası verilen değerlerin adetinden büyükse,
  • Pozisyon numarası 0 ise veya 1 ise,

geriye Null döndürür.

IIF Fonksiyonu

Tanım: IF..ELSE yazımına zaten T-SQL’de alışığız. Belirtilen Boolean bir koşulun sonucuna göre geriye değer döndüren fonksiyondur. Case yapısının kısa hali diyebiliriz.

Söz Dizimi: IIF([Boolean Koşul],[Doğru Değer],[Yanlış Değer])

Örnek Kullanım:

SELECT IIF(10=10,’Eşit’,’Eşit Değil’)  => OK

DECLARE @Sayi int =5, @Sayi2 int = 7

SELECT Sonuc=IIF(@Sayi>@Sayi2,’Sayi 1, Sayi 2”den büyüktür.’,IIF(@Sayi2>@Sayi,’Sayi 2, Sayi 1”den büyüktür’,’Sayılar eşittir’))

Sonuc => Sayi 2, Sayi 1’den büyüktür

–Hatalı Null kullanımı
SELECT IIF(‘a’ > ‘b’, Null,Null)

–Null döndürmek için
DECLARE @null sql_variant
SELECT IIF(‘a’ = ‘b’, @null, @null)

Sonuç => NULL

Performans:

Aslında yazdığınız kod arka planda Excetuion Plan’dan bakarsanız Case statement’a çevirip o şekilde çalıştırıyor. Milisaniyeler cinsinden olsada bir performans kaybı söz konusu

 

Bir sonraki yazımda yeni bir özelliği ile devam edeceğiz.

İyi çalışmalar

, ,

  1. #1 by Erhan on March 4, 2012 - 6:43 pm

    İf bir fonksiyon degildir.

  1. MSSQL 2012 ile Gelen 2 String Fonksiyonu: CONCAT ve FORMAT « Mahmut Can Sözeri

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s