TGViewer
SQL Portal | Базы Данных SQL Portal | Базы Данных @sqlportal · 13.7K subscribers
Post #1789 1.61K
Почему запрос
SELECT * FROM users WHERE status <> 'banned';

не возвращает Charlie, если у него status = NULL?

Потому что в SQL NULL означает «неизвестное значение», а не пустую строку и не какое-то конкретное значение.
Когда SQL проверяет условие:

status <> 'banned'

для строки, где:
status = NULL


результат будет не TRUE и не FALSE, а UNKNOWN.
То есть SQL не может определить, равно ли неизвестное значение 'banned' или нет.

Получается:
NULL = 'banned'    → UNKNOWN
NULL <> 'banned' → UNKNOWN


А в секцию WHERE попадают только строки, для которых условие вернуло TRUE.
TRUE     → строка возвращается
FALSE → строка отбрасывается
UNKNOWN → строка тоже отбрасывается


Поэтому Charlie не попадает в результат.
Если нужно включить строки с NULL, условие следует написать так:
SELECT *
FROM users
WHERE status <> 'banned'
OR status IS NULL;


или в некоторых СУБД (например, PostgreSQL):
SELECT *
FROM users
WHERE status IS DISTINCT FROM 'banned';


Этот оператор рассматривает NULL как отдельное значение и вернёт все строки, где статус не 'banned', включая NULL.

👉 @SQLPortal
  • 👍 4
More from @sqlportal
  1. Oct 11, 2026Чтобы запросы оставались быстрыми, понятными и справлялись с ростом объёма данных, нужны х…
  2. Oct 11, 2026SQL: порядок написания ≠ порядок обработки Запрос начинается с SELECT, но логически обраба…
  3. Oct 10, 2026Какие навыки нужны дата-инженеру? В вакансиях прослеживается закономерность: на первом мес…
  4. Oct 10, 2026Бэкап есть? А если найду? 😳 👉 @SQLPortal
  5. Oct 9, 2026Горизонтальные или вертикальные столбцы: что выбрать? Оба варианта помогают сравнивать кат…
  6. Oct 9, 2026Оконные функции SQL: аналитика без потери отдельных строк В отличие от GROUP BY, оконные ф…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →