2.1 Изявление CASE
Има два начина да напишете израз в SQL CASE
. Първият запис изглежда като превключване от езика Java, докато вторият формат е по-скоро като множествено число if-else
.
Нека започнем с първия вариант - аналог на превключвателя. Общият формат е:
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
Наистина много прorча на switch
, само думите са малко по-различни:
SQL | Java |
---|---|
случай х | превключвател (x) { |
кога стойност | стойност на регистъра: |
тогава резултат | връщане на резултат; |
иначе резултат | по подразбиране: връща резултат; |
край | } |
Нека преведем пример от Java в SQL:
Java | SQL |
---|---|
|
|
2.2 Втора version на оператора CASE
Има и втора version на оператора CASE
, която, Howто бе споменато по-горе, прorча повече на множествено число if-else
. Общият формат е:
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
Тук условията просто се проверяват последователно, ако някое от тях е вярно, тогава посоченият резултат ще бъде върнат. Ако нито едно от условията не е вярно, тогава стойността, посочена в ELSE
.
Нека преведем пример от Java в SQL:
Java | SQL |
---|---|
|
|
|
|
|
|
2.3 Решете проблема с помощта на израза CASE
Нека напишем няHowво интересно запитване. Не забравяйте, че имахме задача - да добавим думата "ИЗТЕКЛО!" към името на минали задачи в tableта със задачи . Може лесно да се направи с CASE
.
За полето за краен срок ще изглежда като втората version на извлечението CASE
:
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
Пример за пълна заявка, използваща оператора CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
Резултатът от тази заявка ще бъде:
document за самоличност | Emploee_id | име | краен срок |
---|---|---|---|
1 | 1 | ПРОСРОЧЕН! Коригиране на грешка във фронтенда | 2022-06-01 |
2 | 2 | Коригиране на грешка в бекенда | 2022-06-15 |
3 | 5 | Купи кафе | 2022-07-01 |
4 | 5 | Купи кафе | 2022-08-01 |
5 | 5 | Купи кафе | 2022-09-01 |
6 | (НУЛА) | Почистете офиса | (НУЛА) |
7 | 4 | Наслаждавай се на живота | (НУЛА) |
8 | 6 | Наслаждавай се на живота | (НУЛА) |
GO TO FULL VERSION