Изявление CASE

На разположение

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
switch (a) {
   case 1: return "one";
   case 2: return "two";
   case 3: return "three";
   default: return "unknown";
}
CASE a
   WHEN 1 THEN 'one'
   WHEN 2 THEN 'two'
   WHEN 3 THEN 'three'
   ELSE 'unknown'
END

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
if (a == 3)
	return "three";
CASE
   WHEN a=3 THEN 'three'
END
if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END
if (a == 1)
	return "three";
else if (a == 2)
	return "two";
else if (a == 3)
	return "three";
else
	return "zero";
CASE
   WHEN a=1 THEN 'one'
   WHEN a=2 THEN 'two'
   WHEN a=3 THEN 'three'
   ELSE 'zero'
END

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 Наслаждавай се на живота (НУЛА)
Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари