ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как добавить оператор CASE в запрос MySQL?

Шестнадцатеричный цветовой код хранится в двоичном типе данных в MySQL

В MySQL оператор CASE описывает способы обработки цикла для выполнения определенного набора условий и возврата случая, сопоставленного с использованием IF-ELSE. Это управляющий оператор, который проверяет набор условий. Если какой-либо регистр найден как TRUE, он возвращает значение. Если ни один регистр не подходит, возвращается значение ELSE. Если значение ELSE не было определено, возвращается NULL.

В этой статье будет подробно рассмотрен оператор CASE в MySQL.

 

Оператор CASE в MySQL

Если у вас есть предыдущий опыт программирования на любом из популярных языков программирования , то оператор CASE определенно вам знакома. Структура следующая.

CASE
WHEN condition_n THEN result_n
WHEN condition_n THEN result_n
ELSE
     else_result
END

 

Давайте вкратце разберем каждую из частей.

Если вы присмотритесь, то структура почти такая же, как в типичной логической структуре if-else в Java.

 

Использование оператора CASE

Базовое использование

Чтобы продемонстрировать применение CASE, мы собираемся использовать выделенную базу данных MySQL. Для простоты использования я буду использовать phpMyAdmin для доступа к базам данных и управления ими. Узнайте больше об установке и настройке phpMyAdmin и MySQL в Ubuntu.

Мы создали пустую базу данных hello_world.

Наша примерная база данных будет содержать информацию о студентах. Создайте новую таблицу с именем «Students».

$ CREATE TABLE Students(ID int, Name varchar(255), State varchar(255), City varchar(255));

 

Теперь вставьте образец ввода в таблицу.

$ INSERT INTO Students (ID, Name, State, City) VALUES ('1', 'Adrien', 'Arizona', 'Prescott');
$ INSERT INTO Students (ID, Name, State, City) VALUES ('2', 'Alisha', 'Nebraska', 'Omaha');
$ INSERT INTO Students (ID, Name, State, City) VALUES ('3', 'Brenda', 'Michigan', 'Detroit');
$ INSERT INTO Students (ID, Name, State, City) VALUES ('4', 'Thompson', 'New York', '');
$ INSERT INTO Students (ID, Name, State, City) VALUES ('5', 'David', '', 'Portland');

 

Взгляните на следующий запрос и его результат.

SELECT Name, State, City FROM Students ORDER BY (
CASE
WHEN State is NULL THEN City
ELSE State
END);

 

Использование оператора CASE с агрегатной функцией

В следующем примере мы создадим новую таблицу базы данных, содержащую информацию о продажах. На основе этой информации мы определим количество заказов по статусу заказа. Для этого мы также будем использовать функцию SUM() в MySQL. В следующем руководстве подробно рассматривается функция SUM() в MySQL.

Создайте новую таблицу Orders.

$ CREATE TABLE Orders (order_ID int, sales_ID int, status varchar(255));

 

Давайте заполним таблицу некоторыми образцами данных.

$ INSERT INTO Orders (order_ID, sales_ID, status) VALUES ('5', '10', 'processing');
$ INSERT INTO Orders (order_ID, sales_ID, status) VALUES ('8', '244', 'success');
$ INSERT INTO Orders (order_ID, sales_ID, status) VALUES ('4', '274', 'processing');
$ INSERT INTO Orders (order_ID, sales_ID, status) VALUES ('80', '452', 'success');
$ INSERT INTO Orders (order_ID, sales_ID, status) VALUES ('10', '10000', 'processing');

 

Следующий код будет подсчитывать экземпляры успеха и обработки.

SELECT
SUM(CASE
WHEN status = 'success' THEN 1
ELSE 0
END) AS 'Success count',
SUM(CASE
WHEN status = 'processing' THEN 1
ELSE 0
END) AS 'processing',
COUNT(*) AS 'Sum total'
FROM Orders;

 

Код показывает сумму всех заказов в соответствии с их статусом. Во-первых, операторы CASE выполняются и возвращают 1 каждый раз, когда он сопоставляется с соответствующим статусом заказа. Наконец, функция SUM() вычисляет общее количество заказов.

 

Последняя мысль

В этой статье мы исследовали использование оператора CASE в MySQL. Короче говоря, это логический оператор, который позволяет эффективно выполнять логику IF-ELSE для запросов SQL. Мы показали, как это реализовать в различных ситуациях. По сравнению с использованием нескольких операторов IF-ELSE, CASE делает код более читаемым и эффективным.

MySQL богат мощными функциями. Чтобы узнать больше, ознакомьтесь со следующими руководствами по схеме , функции DATEDIFF(), работе с подстрокой и т. д.

Exit mobile version