9 Mart 2013 Cumartesi

MS SQL'de Koşullu İfadeler

Merhaba Webkolog takipçileri!

SQL Server'da veri manipülasyonu yaparken veya karmaşık sorgular oluştururken, belirli koşullara göre farklı işlemler yapmak veya farklı değerler döndürmek isteyebiliriz. İşte bu noktada koşullu ifadeler devreye giriyor. Bugün sizlerle, T-SQL'in en temel kontrol mekanizmalarından olan IF-ELSE yapısını ve esnek CASE ifadesini detaylıca inceleyeceğiz. Bu yapılar sayesinde kodlarımızı daha dinamik ve akıllı hale getirebiliriz. Hazırsanız, SQL kodlarımıza mantık katmaya başlayalım!

IF-ELSE Yapısı: Karar Vermenin Temeli

IF-ELSE yapısı, bir veya daha fazla koşula bağlı olarak farklı kod bloklarını çalıştırmamızı sağlar. Tıpkı diğer programlama dillerindeki gibi, belirli bir koşul doğruysa (TRUE) bir eylem, yanlışsa (FALSE) başka bir eylem gerçekleştirmek için kullanılır.

Temel IF Kullanımı

Bir IF ifadesi, parantez içinde bir koşul alır. Eğer bu koşul doğru ise, BEGIN ve END blokları arasındaki kod çalıştırılır.

-- Basit bir IF koşulu
IF (1 > 0)
BEGIN
    PRINT '1, 0\'dan büyüktür.'; -- Mesajı çıktı olarak gösterir
END;
IF-ELSE Kullanımı

Eğer IF koşulu yanlış olursa ne yapılacağını belirtmek için ELSE bloğunu kullanırız.

DECLARE @sayi INT = 5;

IF (@sayi > 10)
BEGIN
    PRINT 'Sayı 10\'dan büyük.';
END
ELSE
BEGIN
    PRINT 'Sayı 10 veya daha küçük.';
END;
IF-ELSE IF-ELSE Kullanımı

Birden fazla koşulu kontrol etmek için ELSE IF yapısını kullanırız. Koşullar sırasıyla kontrol edilir ve ilk doğru olan koşulun bloğu çalıştırılır, diğerleri atlanır.

DECLARE @puan INT = 85;

IF (@puan >= 90)
BEGIN
    PRINT 'Notunuz A.';
END
ELSE IF (@puan >= 80)
BEGIN
    PRINT 'Notunuz B.';
END
ELSE IF (@puan >= 70)
BEGIN
    PRINT 'Notunuz C.';
END
ELSE
BEGIN
    PRINT 'Notunuz D veya daha düşük.';
END;

BEGIN ve END anahtar kelimeleri, birden fazla SQL ifadesini bir blok halinde çalıştırmak için kullanılır. Eğer koşul bloğunda sadece tek bir ifade varsa, BEGIN-END kullanmak zorunlu değildir ancak okunurluk açısından tavsiye edilir.

CASE İfadesi: Veri İçinde Koşullu Değer Döndürme

CASE ifadesi, SELECT sorgularınızda veya UPDATE, INSERT gibi DML işlemlerinde, farklı koşullara göre farklı değerler döndürmek için kullanılır. IF-ELSE gibi bir kod bloğu çalıştırmaz, doğrudan bir değer döndürür.

CASE ifadesinin iki temel formu vardır: Basit CASE ve Aranan CASE.

1. Basit CASE İfadesi

Bu formda, bir sütunun veya ifadenin değeri belirli sabit değerlerle karşılaştırılır. Eğer eşleşme bulunursa, THEN ifadesinden sonraki değer döndürülür.

SELECT
    UrunAdi,
    Fiyat,
    CASE KategoriID
        WHEN 1 THEN 'Elektronik'
        WHEN 2 THEN 'Giyim'
        WHEN 3 THEN 'Mutfak Aletleri'
        ELSE 'Diğer'
    END AS KategoriAdi
FROM Urunler;
2. Aranan (Searched) CASE İfadesi

Bu form, daha karmaşık koşulları (karşılaştırma operatörleri, mantıksal operatörler vb.) kullanmamıza olanak tanır. Her WHEN ifadesi kendi koşuluna sahiptir.

-- Aranan CASE kullanımı
SELECT
    Ad,
    Soyad,
    Yas,
    CASE
        WHEN Yas < 18 THEN 'Küçük Yaş'
        WHEN Yas BETWEEN 18 AND 65 THEN 'Yetişkin'
        WHEN Yas > 65 THEN 'Emekli'
        ELSE 'Bilinmiyor'
    END AS YasGrubu
FROM Personel;

Yukarıdaki örnekler, bir önceki bölümde yer alan dokümandaki basit örneği daha anlaşılır hale getiriyor:

SELECT
    CASE
        WHEN (1 > 0) THEN 'işlem 1'
        WHEN (1 = 0) THEN 'işlem 2'
        ELSE 'işlem 3'
    END AS SonucMesaji;

Önemli Not: Bir CASE ifadesinde, WHEN koşulları sırayla değerlendirilir. İlk doğru olan koşulun THEN değeri döndürülür ve diğer WHEN koşulları dikkate alınmaz. Eğer hiçbir WHEN koşulu doğru değilse ve ELSE bloğu belirtilmişse, ELSE değeri döndürülür. Eğer ELSE belirtilmemişse ve hiçbir koşul eşleşmezse, NULL değeri döndürülür.

IF-ELSE ve CASE Arasındaki Temel Farklar

  • Kullanım Amacı:
    • IF-ELSE: Kontrol akışını yönetir. Koşula göre farklı kod bloklarını çalıştırır. Genellikle stored procedure'ler, trigger'lar veya batch script'ler içinde kullanılır.
    • CASE: Değer döndürür. Bir sütun veya ifadenin değerini, belirli koşullara göre dönüştürmek için kullanılır. Genellikle SELECT, UPDATE veya INSERT sorguları içinde bir sütun değeri olarak kullanılır.
  • Dönüş Değeri:
    • IF-ELSE: Bir değer döndürmez, sadece bir eylem gerçekleştirir (PRINT, INSERT, UPDATE, DELETE vb.).
    • CASE: Her zaman tek bir değer döndürür.
  • Yerleşim:
    • IF-ELSE: T-SQL batch'lerinin veya programatik yapıların bir parçasıdır.
    • CASE: Sorguların içinde bir ifade olarak yer alır.

MS SQL'de IF-ELSE ve CASE ifadeleri, veri tabanı işlemlerinize esneklik ve mantık katmanızı sağlar. Bu yapılar sayesinde, verilerinizi daha anlamlı hale getirebilir, raporlarınızı zenginleştirebilir ve iş mantığınızı doğrudan SQL kodlarınıza yansıtabilirsiniz. Pratik yaparak bu yapıları kendi senaryolarınıza uyarlamanızı tavsiye ederim!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder