Следующий

Условия в SQL и условные SQL запросы CASE, WHEN, THEN, ELSE , END в базах данных SQLite

2 Просмотры· 06/18/20
Кирилл Антонов
Кирилл Антонов
Подписчики
0

Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223

Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Паблик блога в ВК: https://vk.com/zametkinapolyah
Тематическая группа в ВК: https://vk.com/zametki_bd


-- Условные выражения CASE, WHEN, THEN, ELSE, END в SQL

/*
Условные выражения, состоящие из CASE, WHEN, THEN и ELSE
полезны в тех случаях, когда нужно осуществить ряд проверок и
получить конечный результат в зависимости от исхода этих
проверок. По сути, CASE является SQL оператором, а ключевые
слова WHEN и THEN позволяют задавать несколько условия для
проверки, теоретически количество этих условий может быть
бесконечным.

Выражение с оператором CASE имеют две формы записи, но в
любом случае условное выражение в SQL завершается ключевым
словом END.

*/

-- 1 вариант
CASE
WHEN первое условие
THEN первое возвращаемое значение
WHEN второе условие
THEN второе возвращаемое значение

WHEN энное условие
THEN энное возвращаемое значение
[ELSE возвращаемое значение, если условие не будет выполнено]
END

-- 2 вариант
CASE первое значение, которое хотим проверить
WHEN первое значение, с которым сравниваем
THEN первое значение, которое возвращаем
WHEN второе значение, с которым сравниваем
THEN второе значение, которое возвращаем

WHEN энное значение, с которым сравниваем
THEN энное значение, которое возвращаем
[ELSE возвращаемое значение, если условие не будет выполнено]
END

-- Для начала рассмотрим два простых примера
CREATE TABLE booltable (a,b);
INSERT INTO booltable VALUES (1,0);
SELECT * FROM booltable;

-- 1 вариант выражения CASE в SQL
SELECT
CASE WHEN a==1 THEN 'true' ELSE 'false' END as typeColA,
CASE WHEN b THEN 'true' ELSE 'false' END as typeColB
FROM booltable;

-- 2 вариант выражения CASE в SQL
SELECT
CASE a WHEN 1 THEN 'true' ELSE 'false' END AS boolA,
CASE b WHEN 1 THEN 'true' ELSE 'false' END AS boolB
FROM booltable;

Показать больше

 0 Комментарии sort   Сортировать


Следующий