В этом учебном пособии вы узнаете, как использовать оператор CASE в MySQL с синтаксисом и примерами.
Описание
В MySQL оператор CASE имеет функциональность оператора IF-THEN-ELSE и имеет два синтаксиса, которые мы рассмотрим.
Синтаксис
Синтаксис для оператора CASE в MySQL:
WHEN значение_1 THEN
{... выполняется код, когда выражение равно значение_1...}
[ WHEN значение_2 THEN
{...выполняется код, когда выражение равно значение_2...} ]
[ WHEN значение_n THEN
{... выполняется код, когда выражение равно значение_n...} ]
[ ELSE
{... выполнится код, если выражение не будет равно значению...} ]
END CASE;
или
WHEN условие_1 THEN
{... выполняется код, когда условие_1 будет иметь значение TRUE...}
[ WHEN условие_2 THEN
{... выполняется код, когда условие_2 будет иметь значение TRUE...} ]
[ WHEN условие_n THEN
{... выполняется код, когда условие_n будет иметь значение TRUE...} ]
[ ELSE
{... выполнится код, когда все условия будут иметь значения FALSE...} ]
END CASE;
Параметры или аргументы
выражение - значение, которое вы сравниваете со списком значений. (то есть: значение_1, значение_2, ... значение_n).
значение_1, значение_2, ... значение_n - сравнивается в указанном порядке. Когда значение равно выражению, оператор CASE будет выполнять соответствующий код и не сравнивать их дальше.
условие_1, условие_2, ... условие_n - сравнивается в указанном порядке. Как только условие окажется TRUE, оператор CASE выполнит соответствующий код, и не будет более сравнивать условия.
Примечание
- Оператор CASE будет выполнять код ELSE, если ни одно из предложений WHEN не будет выполнено.
Пример
Рассмотрим пример, который показывает, как использовать оператор CASE в MySQL. Во-первых, мы рассмотрим первый синтаксис для оператора CASE. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
DELIMITER // CREATE FUNCTION CostLevel ( monthly_value INT ) RETURNS varchar(20) BEGIN DECLARE cost_level varchar(20); CASE monthly_value WHEN 3000 THEN SET cost_level = 'Low Cost'; WHEN 4000 THEN SET cost_level = 'Avg Cost'; ELSE SET cost_level = 'High Cost'; END CASE; RETURN cost_level; END; // DELIMITER ; |
В этом примере мы использовали первый синтаксис оператора CASE. Если значение month_value будет равно 3000, тогда для cost_level будет установлено значение 'Low Cost'. Если значение month_value будет равно 4000, то для cost_level будет установлено значение 'Avg Cost'. В противном случае cost_level достигнет 'High Cost'.
Теперь рассмотрим использование оператор CASE со вторым синтаксисом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
DELIMITER // CREATE FUNCTION CostLevel ( monthly_value INT ) RETURNS varchar(20) BEGIN DECLARE cost_level varchar(20); CASE WHEN monthly_value <= 3000 THEN SET cost_level = 'Low cost'; WHEN monthly_value > 3000 AND monthly_value <= 6000 THEN SET cost_level = 'Avg cost'; ELSE SET cost_level = 'High cost'; END CASE; RETURN cost_level; END; // DELIMITER ; |
В этом примере мы используем второй синтаксис для оператора CASE. В этом примере, если значение month_value меньше или равно 3000, тогда переменной cost_level будет присвоено 'Low cost'. Если значение month_value больше 3000 и меньше или равно 6000, тогда cost_level будет присвоено значение 'Avg cost'. В противном случае cost_level будет присвоено значение 'High cost'.