Запрос Sql со столбцом = null возвращает нулевой набор результатов

Возможный дубликат:
Почему столбец = NULL не вернуть ни одной строки?

Я пытаюсь запросить строку из базы данных mysql, где значение определенного столбца равно нулю, вот мой запрос:

SELECT * FROM `mytable` WHERE mycolumn=null

На самом деле я использую логический столбец в качестве трехпозиционного переключателя, где 0,1 и ноль предназначены для использования для разных результатов.

Вышеприведенный запрос возвращает нулевой набор результатов, и если я удалю where mycolumn=null, он вернет правильный результат с некоторыми строками, имеющими нулевое значение для указанного столбца.


person Sourabh    schedule 16.09.2012    source источник
comment
SELECT * FROM mytable WHERE mycolumn IS null помогает? Также обратите внимание, что вам не нужно использовать ` для разграничения имен таблиц, если в имени нет пробелов.   -  person dash    schedule 17.09.2012


Ответы (3)


Столбец = null всегда будет давать null

столбец try имеет значение null

SELECT * FROM `mytable` WHERE mycolumn is null
person Dumitrescu Bogdan    schedule 16.09.2012
comment
Column = null всегда ложно, но правильный ответ. - person Tony Hopkinson; 17.09.2012
comment
Поскольку результатом любого арифметического сравнения с NULL также является NULL, вы не можете получить каких-либо осмысленных результатов от таких сравнений. Из MySQL откройте документы. - person Dumitrescu Bogdan; 17.09.2012
comment
@TonyHopkinson Column = null это unknown, а не false. SQL использует трехзначную логику. - person Martin Smith; 17.09.2012
comment
@ Мартин, странный взгляд на это. Будет ли Select * From MyTable Where (Column = null) работать тогда? :) - person Tony Hopkinson; 17.09.2012
comment
@TonyHopkinson на самом деле работает. Проверьте скрипку: sqlfiddle.com/#!2/ а2581/1734/0 - person Dumitrescu Bogdan; 17.09.2012
comment
Это хороший день, я кое-что узнал. Почему больше, чем как, но все же хорошо. - person Tony Hopkinson; 17.09.2012

Вы должны использовать

SELECT * FROM `mytable` WHERE mycolumn is null

Ссылка: http://dev.mysql.com/doc/refman/5.1/en/working-with-null.html

person dominik    schedule 16.09.2012

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

По этой причине X = null и даже null = null никогда не будут истинными, поскольку само выражение оценивается как другое значение null (это означает, что неизвестно, равен ли x нулю).

Вместо этого вы можете использовать IS NULL, чтобы выяснить, установлено ли значение на null:

SELECT * FROM `mytable` WHERE mycolumn is null

...или вы можете объединить значение null ценность во что-то другое.

person Mike Christensen    schedule 16.09.2012