В MySQL оператор CASE WHEN — мощный инструмент для реализации условной логики в запросах. Он позволяет вам указывать несколько условий и выполнять различные блоки кода на основе оценки этих условий. В этой статье мы рассмотрим различные методы использования оператора CASE WHEN с примерами кода, иллюстрирующими их использование.
Метод 1: базовый оператор CASE WHEN
Основной синтаксис оператора CASE WHEN следующий:
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
Пример:
Предположим, у нас есть таблица «Сотрудники» со столбцами «employee_id», «first_name» и «salary». Мы хотим классифицировать сотрудников в зависимости от диапазона их заработной платы. Вот как этого можно добиться с помощью оператора CASE WHEN:
SELECT first_name,
CASE
WHEN salary < 2000 THEN 'Low Salary'
WHEN salary >= 2000 AND salary < 5000 THEN 'Medium Salary'
ELSE 'High Salary'
END AS salary_category
FROM employees;
Метод 2: Поиск оператора CASE WHEN
Поиск оператора CASE WHEN позволяет находить более сложные условия, оценивая каждое условие независимо. Синтаксис следующий:
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
Пример.
Давайте рассмотрим сценарий, в котором мы хотим классифицировать продукты по их ценовому диапазону. Вот как это можно сделать, используя искомый оператор CASE WHEN:
SELECT product_name,
CASE
WHEN price < 10 THEN 'Low Price'
WHEN price >= 10 AND price < 100 THEN 'Medium Price'
ELSE 'High Price'
END AS price_category
FROM products;
Метод 3: вложенный оператор CASE WHEN
Вложенный оператор CASE WHEN позволяет нам встраивать один оператор CASE WHEN в другой. Это полезно, когда нам нужно оценить несколько уровней условий. Вот пример:
SELECT column_name,
CASE
WHEN condition1 THEN
CASE
WHEN nested_condition1 THEN nested_result1
WHEN nested_condition2 THEN nested_result2
...
ELSE nested_result
END
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
Пример:
Предположим, мы хотим классифицировать сотрудников на основе их зарплаты и отдела. Вот как этого можно добиться с помощью вложенного оператора CASE WHEN:
SELECT first_name,
CASE
WHEN department = 'IT' THEN
CASE
WHEN salary < 5000 THEN 'Low Salary (IT)'
ELSE 'High Salary (IT)'
END
WHEN department = 'HR' THEN
CASE
WHEN salary < 3000 THEN 'Low Salary (HR)'
ELSE 'High Salary (HR)'
END
ELSE 'Unknown Department'
END AS salary_category
FROM employees;
Оператор MySQL CASE WHEN — это универсальный инструмент для реализации условной логики в запросах SQL. В этой статье мы рассмотрели три различных метода: базовый оператор CASE WHEN, оператор CASE WHEN с поиском и вложенный оператор CASE WHEN. Используя эти методы, вы можете повысить гибкость и эффективность ваших SQL-запросов.
Не забудьте адаптировать примеры кода к вашему конкретному варианту использования и структуре таблицы. Поэкспериментируйте с различными условиями и выражениями, чтобы добиться желаемых результатов.
Освоив оператор CASE WHEN, вы получите в свое распоряжение мощный инструмент для обработки сложных условий и настройки результатов запросов в MySQL.