Сравнение MySQL с нулевым значением

У меня есть столбец CODE в таблице MySQL, который может быть NULL. Скажем, у меня есть несколько строк с CODE='C', которые я хочу игнорировать в моем наборе результатов выбора. В моем наборе результатов может быть либо CODE=NULL, либо CODE!='C'.

Следующий запрос не возвращает строку с CODE как NULL:

SELECT * from TABLE where CODE!='C'

Но этот запрос работает так, как ожидалось, и я знаю, что это правильный способ сделать это.

SELECT * from TABLE where CODE IS NULL OR CODE!='C'

Мой вопрос: почему наличие только CODE!='C' не возвращает строки, где CODE=NULL? Определенно 'C' не NULL. Здесь мы не сравниваем значение с символом. Может кто-нибудь объяснить, почему это так не работает?

32
задан dev_musings 7 March 2012 в 20:35
поделиться

1 ответ

На основании моих тестов и документации здесь: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

Вы можете сравнить null и получите логический результат, используя < =>
. ПРИМЕЧАНИЕ: это выглядит как оператор NOT EQ, но это оператор EQ

Например:

select x <=> y; 
or
select @x <=> @y;

Это также сравнивает строку с нулем, строку с строкой и т. д.

30
ответ дан 27 November 2019 в 19:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: