В MySQL почему мое значение NULL не сравнивается правильно? - PullRequest
2 голосов
/ 20 марта 2012

У меня есть следующая таблица

Select * from Peeps
Id Name Age 
1  Sam  16
2  John NULL


Select 
Name, 
Age,
(If Age=NULL,1,0) AS Z
from peeps;

Результаты:

+------+------+---+
| name | age  | Z |
+------+------+---+
| Sam  |   16 | 0 |
| John | NULL | 0 |
+------+------+---+

Желаемые результаты

+------+------+---+
| name | age  | Z |
+------+------+---+
| Sam  |   16 | 0 |
| John | NULL | 1 |
+------+------+---+

Ответы [ 2 ]

4 голосов
/ 20 марта 2012

Попробуйте:

Select 
Name, 
Age,
(If Age IS NULL,1,0) AS Z
from peeps;

http://dev.mysql.com/doc/refman/5.1/en/working-with-null.html

3 голосов
/ 20 марта 2012

Используйте это вместо:

IF Age IS NULL

Использование NULL фактически будет представлять нулевое значение, тогда как «NULL» будет действовать как строка с буквами N-U-L-L. Совсем не то же самое.

Окончательный запрос:

SELECT Name, 
       Age,
       (IF Age IS NULL, 1, 0) AS Z
  FROM peeps
...