Разница между MySQL не равна нулю и! = '' - PullRequest
6 голосов
/ 17 июня 2010

Есть ли разница между MySQL

IF (myText IS NOT NULL) THEN

и

IF (myText != '') THEN

Ответы [ 3 ]

11 голосов
/ 17 июня 2010

Да, существует большая разница между значением NULL и пустым / пустым значением.

Вот один ресурс , который описывает различия.

Когда myText IS NULL:

  • myText IS NOT NULL оценивается как FALSE
  • myText != '' оценивается как NULL (что по сути ведет себя так же, как FALSEв этом конкретном случае вы написали)

Однако вы не должны привыкать обращаться с ними одинаково, так как в большинстве случаев они будут вести себя по-разному: Например:

Предположим, у вас есть таблица tbl:

id   text
1    NULL
2    
3    abc

Примечание: 1 содержит значение NULL, а 2 содержит пустую строку ('').

Если вы выполните следующий запрос:

SELECT * FROM tbl WHERE text != ''

... он вернет запись 3.

Если вы выполните следующий запрос:

SELECT * FROM tbl WHERE text IS NOT NULL

... он вернет записи 2 и 3.

2 голосов
/ 17 июня 2010

Да, есть разница.

Проще говоря, myText IS NOT NULL указывает, что myText имеет некоторое значение, которое может быть "слишком" .

Где as myText! = '' указывает, что возвращает TRUE, если myText НЕ содержит пустую строку .

1 голос
/ 17 июня 2010

Есть разница. Если значение столбца по умолчанию равно «NULL», то если для поля не было задано никаких данных, оно действительно равно нулю. Однако, если значение поля было обновлено как '', оно не равно NULL, а является пустым.

Подробнее см. Здесь Ссылка

...