SQL Server’da CASE Kullanımı: Koşullu Sorgular Nasıl Yapılır?

sql-case-when

SQL Server’da CASE ifadesi, bir dizi koşulu değerlendirerek farklı sonuçlar döndüren bir mantıksal ifadedir. CASE ifadesi, bir if-then-else yapısı gibi çalışır. Yani, bir koşul doğru olduğunda, okumayı durdurur ve sonucu döndürür. Eğer hiçbir koşul doğru değilse, ELSE kısmındaki değeri döndürür. Eğer ELSE kısmı yoksa, NULL değeri döndürür.

CASE ifadesi, iki farklı biçimde kullanılabilir:

  • Basit CASE ifadesi: Bir ifadeyi, bir dizi basit ifadeyle karşılaştırır ve sonucu belirler.
CASE input_expression
  WHEN when_expression_1 THEN result_expression_1
  ...
  WHEN when_expression_n THEN result_expression_n
  [ELSE else_result_expression]
END
  • Aranan CASE ifadesi: Bir dizi Boolean ifadeyi değerlendirir ve sonucu belirler.
CASE
  WHEN boolean_expression_1 THEN result_expression_1
  ...
  WHEN boolean_expression_n THEN result_expression_n
  [ELSE else_result_expression]
END

CASE ifadesi, herhangi bir ifade kullanılabilecek yerde kullanılabilir. Örneğin, SELECT, UPDATE, DELETE ve SET gibi ifadelerde ve IN, WHERE, ORDER BY ve HAVING gibi kısımlarda kullanılabilir.

CASE ifadesinin kullanımına birkaç örnek verelim:

  • Bir tablodaki değerlere göre farklı bir sütun oluşturmak için basit CASE ifadesi kullanalım.
-- Products tablosu
+----+------------+-------+
| id | name       | price |
+----+------------+-------+
| 1  | Laptop     | 5000  |
| 2  | Mouse      | 50    |
| 3  | Keyboard   | 100   |
| 4  | Monitor    | 1500  |
| 5  | Printer    | 800   |
+----+------------+-------+

-- Fiyata göre ürün kategorisi belirleyen bir sütun ekleyelim
SELECT id, name, price,
  CASE price
    WHEN price < 100 THEN 'Cheap'
    WHEN price BETWEEN 100 AND 1000 THEN 'Medium'
    WHEN price > 1000 THEN 'Expensive'
  END AS category
FROM Products;

-- Sonuç
+----+------------+-------+-----------+
| id | name       | price | category  |
+----+------------+-------+-----------+
| 1  | Laptop     | 5000  | Expensive |
| 2  | Mouse      | 50    | Cheap     |
| 3  | Keyboard   | 100   | Medium    |
| 4  | Monitor    | 1500  | Expensive |
| 5  | Printer    | 800   | Medium    |
+----+------------+-------+-----------+
  • Bir tablodaki değerleri güncellemek için aranan CASE ifadesi kullanalım.
-- Products tablosu
+----+------------+-------+
| id | name       | price |
+----+------------+-------+
| 1  | Laptop     | 5000  |
| 2  | Mouse      | 50    |
| 3  | Keyboard   | 100   |
| 4  | Monitor    | 1500  |
| 5  | Printer    | 800   |
+----+------------+-------+

-- Fiyatı 1000'den büyük olan ürünlerin fiyatını %10 indirelim
UPDATE Products
SET price = CASE
  WHEN price > 1000 THEN price * 0.9
  ELSE price
END;

-- Sonuç
+----+------------+-------+
| id | name       | price |
+----+------------+-------+
| 1  | Laptop     | 4500  |
| 2  | Mouse      | 50    |
| 3  | Keyboard   | 100   |
| 4  | Monitor    | 1350  |
| 5  | Printer    | 800   |
+----+------------+-------+

Bu ifadeyi birçok şekilde kullanabilirsin. Update, delete gibi işlemlerin dışında Select ifadesinde veya where içerisinde de kullanabilirsiniz. Bu sizi uzun uzun sql yazmaktan, tekrarlayan tabloları çağırmaktan kurtarabilir. CASE ifadesi, SQL Server’da koşullu sorgular yapmak için çok kullanışlı bir araçtır. Daha fazla bilgi için Microsoft Learn sayfasını ziyaret edebilirsiniz ve daha detaylı bilgi alabilirsiniz.

CASE WHEN konusuyla ilginizi çektiysek diğer konularımıza da göz atabilirsiniz.

Giden Bağlantılar: SQL Server’ın resmi belgelerine bağlantılar eklendi.

Bir yanıt yazın