SQL'de If Else Kullanımı

Çokca sorulan sorulardan birisi de SQL sorgularımız içerisinde if else koşul yapısının kullanımıdır.

Programlama dillerinin ortak özelliklerinden birisi de "Bunlar olunca şunları yap", "Gömleği mavi seçersem kravatı beyaz seç" gibi cümlelerin temelinde yatan koşul cümleleridir. SQL dilinde de bu yapıyı kullanmak mümkün.
Bu konuyu daha iyi anlamak için birkaç örnek üzerinde duralım.
Öncelik olarak kullanıcı tablosu oluşturalım.
tblKullanicilar (Kullanıcılar tablosu)
CREATE TABLE tblKullanicilar
(
kullanici_ID INT PRIMARY KEY NOT NULL IDENTITY(1,1),
ad VARCHAR(50),
soyad VARCHAR(50),
cinsiyet VARCHAR(1),
kullanici_adi VARCHAR(50),
tc_no CHAR(11),
dogum_tarihi DATE
)

Oluşturduğumuz tablo üzerinde işlem yapmak için birkaç kayıt ekleyelim.
Kullanıcı Verileri
INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Serkan', 'TOGAL', 'E', 'ontedi', '12345678901', '01.01.1980')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Asmin Nisa', 'TOGAL', 'K', 'asmin', '12312312322', '01.01.2014')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Ahmed İhsan', 'TOGAL', 'E', 'ahmed', '33344455566', '01.01.2016')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Yusuf Taha', 'FISTIK', 'E', 'yusuf', '55566677788', '01.02.2016')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Serkan', 'YENER', 'E', 'serkanyener', '91266677788', '11.12.2002')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Cansu', 'AHİ', 'K', 'cansuahi', '81366677738', '02.11.2002')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Serkan', 'KAYNAK', 'E', 'serkankaynak', '23466677738', '02.11.1999')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Tamer', 'TOKSÖZ', 'E', 'tamer', '23466667838', '02.03.1986')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Selçuk', 'DEMİR', 'E', 'selcukdemir', '93466667814', '12.09.1982')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Leyla', 'AY', 'K', 'leyla', '89866667814', '12.09.1991')

INSERT INTO tblKullanicilar(ad, soyad, cinsiyet, kullanici_adi, tc_no, dogum_tarihi)
VALUES
('Mustafa', 'MERT', 'E', 'mustafamert', '19203283832', '12.12.1996')

Tablo Oluştu
SQL'de If Else Kullanımı

Örnek 1
DECLARE @adiniz VARCHAR(50) = 'Serkan'

IF @adiniz IS NOT NULL
 SELECT * FROM tblKullanicilar WHERE ad = @adiniz

Örnek 1 Sonucu
SQL'de If Else Kullanımı

Örnek 2
DECLARE @adiniz VARCHAR(50) = 'Ahmed İhsan'
DECLARE @soyadiniz VARCHAR(50) = 'TOGAL'

IF (@adiniz IS NOT NULL) AND (@soyadiniz IS NOT NULL)
 SELECT * FROM tblKullanicilar WHERE ad = @adiniz AND soyad = @soyadiniz

Örnek 2 Sonucu
SQL'de If Else Kullanımı

Örnek 3
DECLARE @cinsiyet VARCHAR(1) = 'K'

IF @cinsiyet = 'K'
 SELECT * FROM tblKullanicilar WHERE cinsiyet = 'K'

Örnek 3 Sonucu
SQL'de If Else Kullanımı

Bu örneğimizde ise doğum tarihi boş olmayan ve 2015-01-01 tarihinden sonra doğmuş kişileri listeleyelim.

Örnek 4
DECLARE @dogum_tarihi DATE = '2015-01-01'

IF @dogum_tarihi IS NOT NULL
 SELECT * FROM tblKullanicilar WHERE dogum_tarihi > @dogum_tarihi

Örnek 4 Sonucu
SQL'de If Else Kullanımı

Sorgularımızı biraz daha ileri seviyeye taşıyalım. Mesela ad, soyad, cinsiyet, kullanici_adi, tc_no gibi ifadelerden herhangi birine ait değer var ise ona ait kritere göre arama sorgusunu yazalım. Parametrelerin varsayılan değerini NULL olarak atadık. Sizler onlara istediğiniz değeri vererek sorgumuzun nasıl çalıştığına dair fikir edinebilirsiniz.

DECLARE @ad VARCHAR(50) = NULL
olan parametre yerine
DECLARE @ad VARCHAR(50) = 'Serkan' olarak yaparsanız ad sütununda arama yapıldığını görebilirsiniz. Benzer şekilde diğer sütunlarda da arama yapılmasını istiyorsak o parametrenin NULL olan değeri yerine istenilen değeri vermemiz gerekiyor.
DECLARE @soyad VARCHAR(50) = 'TOGAL' ataması yaparsak hem ad hem de soyad sütunları bu değerlere karşılık gelen verileri listelemiş olur.

Kodlarımızı Kısaltalım 1
DECLARE @ad VARCHAR(50) = NULL
DECLARE @soyad VARCHAR(50) = NULL
DECLARE @cinsiyet VARCHAR(1) = NULL
DECLARE @kullanici_adi VARCHAR(50) = NULL
DECLARE @tc_no CHAR(11) = NULL

SELECT * FROM tblKullanicilar 
WHERE
(
   (@ad IS NULL OR ad = @ad) 
   AND
   (@soyad IS NULL OR soyad = @soyad) 
   AND
   (@cinsiyet IS NULL OR cinsiyet = @cinsiyet) 
   AND
   (@kullanici_adi IS NULL OR kullanici_adi = @kullanici_adi) 
   AND
   (@tc_no IS NULL OR tc_no = @tc_no) 
)

Görüldüğü gibi kodlarımız biraz daha düzene girdi böylece birden çok if koşulunu daha da minimize ederek kod yığınından kurtulmuş olduk. Şimdi ise kodlarımızda biraz daha kısaltmaya gidelim. Mesela aynı tipte olan sütunlar için (VARCHAR sütunlar) parametreleri azaltıp kod kalabalığını biraz daha önlemiş olalım. Ayrıca LIKE komutu ile arayacağımız değerlere uygun kullanıcı için birebir uyanı değil de içerisinde o ifadelerin geçtiği kullanıcıları bulmaya çalışalım.

Kodlarımızı Kısaltalım 2
DECLARE @kelime VARCHAR(50) = 'E'
DECLARE @cinsiyet VARCHAR(1) =  NULL
DECLARE @tc_no CHAR(11) = NULL

SELECT * FROM tblKullanicilar 
WHERE
(
   (@kelime IS NULL OR (ad LIKE '%' + @kelime + '%' OR soyad LIKE '%' + @kelime + '%' OR kullanici_adi LIKE '%' + @kelime + '%')) 
   AND
   (@cinsiyet IS NULL OR cinsiyet = @cinsiyet) 
   AND
   (@tc_no IS NULL OR tc_no = @tc_no) 
)

Şimdi ise ad, soyad, kullanici_adi gibi herhangi bir sütunda AL değeri olup aynı anda cinsiyet = 'K' olan kullanıcıları listeleyelim.

Örnek 5
DECLARE @kelime VARCHAR(50) = 'AL'
DECLARE @cinsiyet VARCHAR(1) =  'K'
DECLARE @tc_no CHAR(11) = NULL

SELECT * FROM tblKullanicilar 
WHERE
(
   (@kelime IS NULL OR (ad LIKE '%' + @kelime + '%' OR soyad LIKE '%' + @kelime + '%' OR kullanici_adi LIKE '%' + @kelime + '%')) 
   AND
   (@cinsiyet IS NULL OR cinsiyet = @cinsiyet) 
   AND
   (@tc_no IS NULL OR tc_no = @tc_no) 
)
Örnek
SQL'de If Else Kullanımı

Yorumlar

Henüz hiçbir yorum yazılmamış. İlk yorumu siz yapın.

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

Çizgi Filmler

INSTAGRAM VIDEO İNDİR

Instagram Video İndirme Aracı

EN

  • Popüler
  • Yeni
  • Son Yorum