SQL Server – IIF Fonksiyonu İle Veri Kontrolü
Merhaba,
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;
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.
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…
Merhabalar,
Sql tablomda oluşturduğum verilerimi select * from ile listeleme yaptığımda tekrar eden verileri den den (“” “”) işareti ile nasıl listeleyebilirim, heryerde aynı kayıtları bulup silme konuları var ama sorduğum sorunun cevabı yok, bunu if ile veya başka hangi yolla yapabilirim, teşekkürler.
ÖRNEK
calisanadi maasi ay
Ali 3250 OCAK
” ” 3550 ŞUBAT
” ” 3750 MART
Ahmet 2575 OCAK
Veli 2750 OCAK
” ” 2850 ŞUBAT
Merhaba,
Sorunuz taktire şayan… Gayet güzel… Çözüm olarak ‘Northwind’ veritabanındaki ‘Satışlar’ tablosunda aşağıdaki örnek sorguyu yazmış bulunmaktayım. Bakıp, inceleyip, mantığını kavrayabilir ve kendi sorgularınıza uyarlayabilirsiniz.
Kolay gelsin…
Eline sağlık..