select * from table1 where null = null or null <> null or 123 <> null or null is null
Примечание: представьте, что таблица table1 не пустая. Вернет ли этот запрос строки? Почему?
Ответ
Да, вернет. Причина в последнем условии null is null. Оно указано правильно. Дело в том, что при операции сравнения (=, <> , > , <) значения null c каким-либо числом или полем всегда возвращается значение FALSE. Т.е. синтаксический запрос написан правильно и не упадет, но он отсекает строки.
NULL
в базах данных — это специальное значение, которое может быть записано в поле таблицы. NULL
соответствует понятию «пустое поле», т.е. «поле, не содержащее никакого значения». Но его нельзя сравнивать константой. NULL
можно сравнивать только через оператор is т.е. null is null или field1 is null.
@sqlhub