Выражения, функции и CASE
069 мин
SELECT не только показывает столбцы — он ещё и вычисляет. В этом уроке — арифметика, работа с текстом и условие «если … то» через CASE.
Арифметика
Работают + - * / и % (остаток от деления):
Осторожно с делением целого на целое. В PostgreSQL
7 / 2=3(дробная часть отбрасывается), а в MySQL —3.5000. Нужна дробь — сделайте одно из чисел дробным:7 * 1.0 / 2.
Округление: ROUND
ROUND(число, n) — до n знаков. Есть ещё CEIL (вверх) и FLOOR (вниз).
Функции для текста
| Функция | Что делает |
|---|---|
UPPER(s) / LOWER(s) |
заглавные / строчные буквы |
LENGTH(s) |
количество символов |
TRIM(s) |
убирает пробелы в начале и в конце |
SUBSTRING(s, 1, 3) |
3 символа, начиная с 1-го |
REPLACE(s, 'a', 'b') |
замена |
Склеивание строк:
В PostgreSQL — оператор || или функция CONCAT:
Вычисления с NULL: COALESCE
Любое вычисление с участием NULL даёт NULL: 5 + NULL = NULL. COALESCE(a, b) берёт b, если a пустое:
CASE — «если … то»
Условия проверяются сверху вниз, берётся первое подходящее. Если не подошло ни одно — ELSE, а если нет и его — NULL.
Выведите name каждого товара и общую стоимость его остатка на складе (price * stock).
Выведите first_name водителей и категорию по рейтингу: 4.8 и выше — 'top', остальные — 'oddiy', у кого рейтинга нет — 'yangi'.
Запомните
- В
SELECTможно считать; с делением целых чисел будьте внимательны. COALESCE(x, 0)подставляет значение вместоNULL.CASE WHEN … THEN … ELSE … ENDвыбирает значение по условию.