В этом учебном пособии вы узнаете, как использовать MariaDB функцию CASE с синтаксисом и примерами.
Описание
MariaDB функция CASE обладает функциональностью оператора IF-THEN-ELSE, позволяя вам оценивать условия и возвращать значение при выполнении первого условия.
Синтаксис
Синтаксис функции CASE в MariaDB:
WHEN value_1 THEN result_1
WHEN value_2 THEN result_2
..
WHEN value_n THEN result_n
ELSE result
END
Или
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
..
WHEN condition_n THEN result_n
ELSE result
END
Параметры или аргументы
- expression
- Значение, которое вы сравниваете со списком значений. (т.е.: value_1, value_2, .. value_n).
- value_1 to value_n
- Значения оцениваются в определенном порядке. Как только значение соответствует выражению, функция CASE вернет соответствующий результат и больше не будет оценивать.
- condition_1 to condition_n
- Значения оцениваются в определенном порядке. Как только condition будет установлено как TRUE (истина), функция CASE вернет результат и больше не будет оценивать условия.
- result_1 to result_n
- Значение, возвращаемое, если condition установлено как TRUE (истина).
Примечание
- Если value/condition не найдено как TRUE, функция CASE вернет значение в операторе ELSE.
- Если ELSE опущено и не найдено ни одного condition, которое является истинным, функция CASE вернет NULL.
Применение
Функция CASE может использоваться в следующих версиях MariaDB:
- MariaDB 10
Пример
Давайте посмотрим, как использовать функцию CASE в MariaDB.
Вы можете использовать функцию CASE в SQL запросе, в который включено expression.
1 2 3 4 5 6 7 8 |
SELECT site_id, site_name, CASE server_name WHEN 'MyServer' THEN 'Upgrade Now' WHEN 'YourServer' THEN 'Upgrade Later' ELSE 'Do Nothing' END FROM sites WHERE site_name in ('Google.com', 'Bing.com'); |
Или вы можете написать оператор SQL, используя функцию CASE, например: (пропускает параметр expression)
1 2 3 4 5 6 7 8 |
SELECT site_id, site_name, CASE WHEN server_name = 'MyServer' THEN 'Upgrade Now' WHEN server_name = 'YourServer' THEN 'Upgrade Later' ELSE 'Do Nothing' END FROM sites WHERE site_name in ('Google.com', 'Bing.com'); |
Следует отметить, что условие ELSE в функции CASE является необязательным. Давайте изменим наши примеры с отсутствующим условием ELSE.
1 2 3 4 5 6 7 |
SELECT site_id, site_name, CASE server_name WHEN 'MyServer' THEN 'Upgrade Now' WHEN 'YourServer' THEN 'Upgrade Later' END FROM sites WHERE site_name in ('Google.com', 'Bing.com'); |
Или же
1 2 3 4 5 6 7 |
SELECT site_id, site_name, CASE WHEN server_name = 'MyServer' THEN 'Upgrade Now' WHEN server_name = 'YourServer' THEN 'Upgrade Later' END FROM sites WHERE site_name in ('Google.com', 'Bing.com'); |
Если предложение ELSE опущено, то если condition не является истинным, функция CASE вернет значение NULL.