SQL Server – IIF Fonksiyonu İle Veri Kontrolü

Bir yazılımı bütün olarak ele aldığımızda; genellikle veritabanı tablolarındaki tüm veriler var olduğu gibi son kullanıcıya yansıtılmamakta, gerektiği kadar, hatta verinin orjinal fiziksel kaydını bozmadan kullanıcının anlayabileceği şekilde formatlandırarak yansıtılmaktadır.Tüm bunlara nazaran kullanıcının anlam veremeyeceği istatistiksel veriler yahut sadece programın anlayabileceği formatlandırılmış veriler saklanmakta, gerektiğinde tekrar kullanıcının anlayabileceği şekilde parse edilip arayüze sunulmaktadır.

Tüm bu süreç bazen veritabanı sorgulanırken gerçekleştirilmektedir ki genellikle tercihimiz ve mümkünse önerimizde budur. Tabi her işin bir bedeli olan yazılım dünyasında, tablo sorgularında gelen verileri kontrol edebilmek ve son kullanıcının anlam verebileceği şekilde formatlandırabilmek için yapılan çalışmalar sorguları iyice kompleksleştirmekte ve bu durum özellikle yazılım üzerinden gerçekleştirilen veritabanı sorgulama(mesela Ado.NET kullanırken) durumlarında farkedilmesi zor, zaman alıcı ama aslında çok basit hatalara sebep olabilmektedir.

Bu tarz durumlara, sorgu esnasında elimizdeki veriyi kontrol edebilmek için ‘CASE – WHEN – ELSE – END’ gibi kalıpsal yapıları örnek verebiliriz. Hatta bu yapıyı kodsal olarak aşağıda örneklendirirsek;

1
2
3
4
SELECT CASE UnvanEki WHEN 'Ms.' THEN 'Bayan'
ELSE CASE UnvanEki WHEN 'Mrs.' THEN
'Bayan' ELSE 'Bay' END END
FROM Personeller

görüldüğü üzere Personeller tablosundan gelen verilerin “Mr.”, “Ms.” ve “Mrs.” bilgilerine karşılık Türkçe anlamlarını yazmaya çalıştığımız zaman sorgu semantik olarak lüzumsuz şişkinlik göstermektedir.

Bu tarz veri kontrolü yapılarak formatlandırılmış sorgularda daha pratik ve kullanışlı çalışma sergileyebilmemiz için SQL Server 2012 sürümüyle birlikte IIF fonksiyonu gelmiş bulunmaktadır.

SELECT IIF(UnvanEki = ‘Ms.’ OR UnvanEki = ‘Mrs.’, ‘Bayan’, ‘Bay’) FROM Personeller

Gördüğünüz üzere select sorgularında verileri formatlandırmak için IIF fonksiyonu gayet kullanışlılık arz etmekte ve bu işlemi yaparken olası kullanıcı hata ihtimalinide oldukça düşürmektedir.