Какие операторы используются для задания условий в предложении WHERE SQL?

Ответ

Условия в SQL формируются с помощью трех групп операторов в предложении WHERE, HAVING или ON.

1. Операторы сравнения

Используются для сравнения значений.

  • = — равно.
  • <> или != — не равно.
  • > — больше.
  • < — меньше.
  • >= — больше или равно.
  • <= — меньше или равно.

2. Логические операторы

Комбинируют несколько условий.

  • AND — истинно, если оба условия истинны.
  • OR — истинно, если хотя бы одно условие истинно.
  • NOT — инвертирует результат условия.

3. Специальные операторы для работы с наборами и шаблонами

  • BETWEEN — проверяет вхождение в диапазон (включительно).
  • IN — проверяет вхождение в список значений.
  • LIKE / ILIKE — сопоставление строки с шаблоном (с использованием % и _). ILIKE — регистронезависимый (в некоторых СУБД).
  • IS NULL / IS NOT NULL — проверка на NULL (использовать = NULL некорректно!).
  • EXISTS — проверяет существование строк в подзапросе.

Пример комплексного условия:

SELECT id, name, age, city, registration_date
FROM users
WHERE age >= 18
  AND city IN ('Moscow', 'London', 'Berlin')
  AND (registration_date BETWEEN '2023-01-01' AND '2023-12-31')
  AND email IS NOT NULL
  AND name LIKE 'A%' -- Имена, начинающиеся на 'A'
  AND NOT status = 'banned';

Ключевой момент: Условия вычисляются с учетом приоритета (NOT > AND > OR). Всегда используйте скобки () для явного задания логики, особенно с OR.

Ответ 18+ 🔞

Э, слушай сюда, про SQL условия, а то потом будешь плакать, что запрос не работает, а я тебе говорил, блядь!

Вот смотри, вся эта хуйня с WHERE, HAVING или ON — это просто три места, куда ты можешь впендюрить свои проверки. А сами проверки делятся на три банды, как в плохом районе.

Первая банда — операторы сравнения. Тупые как пробка, но без них нихуя.

  • = — равно. Банально, но свято.
  • <> или != — не равно. Одно и то же, выбирай, что нравится, как тапки.
  • >, <, >=, <= — больше, меньше и прочая хуйня. Тут всё понятно, даже мартышке.

Вторая банда — логические операторы. Вот тут уже начинается магия, а иногда и пиздец.

  • AND — работает, только если ОБА условия правда. Жёсткий стукач, блядь.
  • OR — сработает, если ХОТЯ БЫ ОДНО условие правда. Похуист, одним словом.
  • NOT — просто берёт результат и говорит: «Да пошёл ты нахуй, всё наоборот». Инвертирует, короче.

Третья банда — спецназ для сложных случаев. Без них — как без рук, а иногда и без головы.

  • BETWEEN — «Дай мне всё ОТ и ДО». Включая границы, не забывай!
  • IN — «Дай мне всё из этого списка». Удобно, не надо городить кучу OR.
  • LIKE / ILIKE — для поиска по шаблону. % — любое количество букв, _ — одна буква. ILIKE — тот же урод, но не смотрит на регистр (в некоторых базах, не везде, сука!).
  • IS NULL / IS NOT NULL — ВНИМАНИЕ, ЕБАНОЕ ПРАВИЛО: чтобы проверить на NULL, надо использовать ИМЕННО ЭТИ операторы. = NULL — это пиздец и неправильно, запомни нахуй!
  • EXISTS — хитрая жопа. Проверяет, есть ли хоть что-то в результатах подзапроса. Мощная штука, но мозг иногда выносит.

Вот тебе пример, как это всё вместе выглядит, чтобы не было, как у того немого Герасима, который только «Му-му» мог сказать:

SELECT id, name, age, city, registration_date
FROM users
WHERE age >= 18 -- Совершеннолетние, блядь
  AND city IN ('Moscow', 'London', 'Berlin') -- Только из этих городов, падлы
  AND (registration_date BETWEEN '2023-01-01' AND '2023-12-31') -- Зарегились в прошлом году
  AND email IS NOT NULL -- Чтобы почта была, а то куда мы им письма пошлём?
  AND name LIKE 'A%' -- Имена на букву 'A', допустим
  AND NOT status = 'banned'; -- И чтобы не забаненные, епта!

И ГЛАВНОЕ, НА ЧЁМ ВСЕ ГОРЯТ, КАК КОТЛЕТЫ: Порядок действий! Сначала NOT, потом AND, потом OR. Приоритет, блядь! Чтобы не получилось неожиданной хуйни, ОБЯЗАТЕЛЬНО оборачивай в скобки (), особенно когда используешь OR. Иначе SQL сделает по-своему, а ты потом будешь чесать репу и думать, что за мудак это писал. А мудак — это ты, потому что скобки не поставил!