2013-06-20 3 views
2

У меня разные результаты, когда я запускаю запросы с != NULL ИЛИ IS NOT NULL.В MySql какая разница между: = NULL и IS NOT NULL

/** No results returned.*/ 
     SELECT * 
     FROM PORT_INFO 
     WHERE PORT_CODE != NULL; 

    /** Results are returned.*/ 
    SELECT * 
    FROM PORT_INFO 
    WHERE PORT_CODE IS NOT NULL; 
  • В моей таблице, колонок PORT_CODE обнуляемый.
  • Колонка типа VARCHAR (4).
  • MySql Version 5.5.13 предприятие.

ответ

2

От documentation:

Поскольку результат любого арифметического сравнения с NULL также NULL, вы не можете получить какие-либо значимые результаты от таких сравнений.

Так что в основном IS NOT NULL будет на самом деле делать то, что вы собираетесь, в то время как != не будет делать ничего полезного (так как это тоже будет просто вернуть NULL).

0

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

0

Любое сравнение или операция с NULL возвращает NULL, за исключением IS NULL.

A NULL boolean считается ложным.

Итак, выражения типа <> NULL, = NULL и т. Д. Всегда являются ложными.

Это стандартное поведение ANSI.

 Смежные вопросы

  • Нет связанных вопросов^_^