2.1 CASE bildirimi
SQL'de bir ifade yazmanın iki yolu vardır CASE
. İlk giriş, Java dilinden geçiş gibi görünmesini sağlarken, ikinci biçim daha çok çoğul gibi if-else
.
İlk seçenekle başlayalım - bir anahtar analogu. Genel format:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Gerçekten çok benzer switch
, sadece kelimeler biraz farklıdır:
SQL | java |
---|---|
durum x | anahtar (x) { |
ne zaman değer | vaka değeri: |
sonra sonuç | dönüş sonucu; |
başka sonuç | varsayılan: dönüş sonucu; |
son | } |
Java'dan bir örneği SQL'e çevirelim:
java | SQL |
---|---|
|
|
2.2 CASE ifadesinin ikinci versiyonu
Operatörün CASE
yukarıda bahsedildiği gibi daha çok çoğul olan ikinci bir versiyonu da vardır if-else
. Genel format:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Burada, koşullar sırayla kontrol edilir, bunlardan herhangi biri doğruysa, belirtilen sonuç döndürülür. Koşullardan hiçbiri doğru değilse, içinde belirtilen değer ELSE
.
Java'dan bir örneği SQL'e çevirelim:
java | SQL |
---|---|
|
|
|
|
|
|
2.3 CASE deyimini kullanarak sorunu çözün
İlginç bir sorgu yazalım. Unutma, bir görevimiz vardı - "SÜRESİ DOLDU !" görev tablosundaki geçmiş görevlerin adına . ile kolayca yapılabilmektedir CASE
.
Son tarih alanı için , ifadenin ikinci versiyonu gibi görünecektir CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Operatörü kullanan eksiksiz bir sorgu örneği CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Bu sorgunun sonucu şöyle olacaktır:
İD | çalışan kimliği | isim | son teslim tarihi |
---|---|---|---|
1 | 1 | GÜNÜ GEÇMİŞ! Ön uçtaki bir hatayı düzeltin | 2022-06-01 |
2 | 2 | Arka uçtaki bir hatayı düzeltin | 2022-06-15 |
3 | 5 | kahve satın al | 2022-07-01 |
4 | 5 | kahve satın al | 2022-08-01 |
5 | 5 | kahve satın al | 2022-09-01 |
6 | (HÜKÜMSÜZ) | ofisi temizle | (HÜKÜMSÜZ) |
7 | 4 | Hayatın tadını çıkar | (HÜKÜMSÜZ) |
8 | 6 | Hayatın tadını çıkar | (HÜKÜMSÜZ) |