null используется с логическим оператором - PullRequest
3 голосов
/ 01 апреля 2009

У меня есть таблица с именем, возрастом и адресом. У меня всего пять строк данных в таблице. Для некоторых строк возраст остается нулевым. Я должен отобразить все данные, где возраст не равен нулю.

выберите * из sample_table где (age! = Null);

Но вывод не отображается, и он также не выдает ошибку. Пожалуйста, объясните это. Спасибо.

Ответы [ 3 ]

4 голосов
/ 01 апреля 2009

С NULL вы должны использовать IS или IS NOT. Следующий запрос должен работать:

SELECT * FROM sample_table WHERE (age IS NOT NULL)
2 голосов
/ 01 апреля 2009

Объяснение из MySQL

Концепция значения NULL является распространенным источником путаницы для новички в SQL, которые часто думают, что NULL - это то же самое, что и пустой Строка ''. Это не тот случай.

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

Если вы хотите искать значения столбцов, которые имеют значение NULL, вы не можете использовать тест expr = NULL.

Для поиска значений NULL необходимо использовать тест IS NULL.

1 голос
/ 01 апреля 2009

Вы должны использовать IS NULL или НЕ NULL.

Вы не можете сравнивать напрямую с NULL, потому что это не значение (пожалуйста, без педантов!)

NULL в Википедии

MySQL, Sybase, SQL Server ... все то же самое

...