SQLLab
Теория· 5 мин· 10 XP

WHERE с текстом — фильтруем по категории

Зачем это нужно

Часто нужно отобрать строки по текстовому атрибуту: только «Электроника», только заказы со статусом «доставлено», только клиенты из «Москвы».

Текст в WHERE — в одинарных кавычках

sql
-- ПРАВИЛЬНО: текст в одинарных кавычках
SELECT name FROM products WHERE category = 'Книги';
SELECT name FROM products WHERE category != 'Прочее';

Одинарные кавычки '...' — стандарт SQL для строковых значений. Двойные кавычки "..." в PostgreSQL используются для имён колонок и псевдонимов.

Практические примеры

sql
-- Только электроника
SELECT name, price, stock
FROM products
WHERE category = 'Электроника'
ORDER BY price DESC;

-- Всё кроме «Прочего»
SELECT name, category
FROM products
WHERE category != 'Прочее'
ORDER BY category, name;

Регистр имеет значение

PostgreSQL чувствителен к регистру при сравнении через =:

sql
WHERE category = 'Книги'    -- найдёт «Книги» ✓
WHERE category = 'книги'    -- НЕ найдёт ничего ✗

Чтобы посмотреть реальные значения: SELECT DISTINCT category FROM products;.

Частые ошибки

Двойные кавычки для значения — WHERE category = "Книги" — ошибка. PostgreSQL воспримет "Книги" как имя колонки.

Забыли кавычки — WHERE category = Книги — ошибка синтаксиса.

Запомни

Текстовые значения в WHERE — в одинарных кавычках. Регистр важен.


Микро-практика

Найдите ошибки:

  1. WHERE category = "Одежда"
  2. WHERE name = iPhone
  3. WHERE category = 'спорт' (в базе хранится «Спорт»)
Ответы
  1. Двойные кавычки — ошибка. Правильно: WHERE category = 'Одежда'
  2. Нет кавычек — ошибка. Правильно: WHERE name = 'iPhone'
  3. Регистр не совпадает — ничего не найдёт. Правильно: WHERE category = 'Спорт'

Прочитайте урок до конца — прогресс засчитается автоматически