Проверка пустое поле с MySQL

Я имею, записал запрос для проверки на пользователей с определенными критериями, один являющийся у них есть адрес электронной почты.

Наш сайт позволит пользователю иметь или не иметь адрес электронной почты.

$aUsers=$this->readToArray('
 SELECT `userID` 
 FROM `users` 
 WHERE `userID` 
 IN(SELECT `userID`
         FROM `users_indvSettings`
  WHERE `indvSettingID`=5 AND `optionID`='.$time.')
  AND `email`!=""
 ');

Действительно ли это - лучший способ проверить на пустое поле в SQL? Я только что попробовал, "NOT NULL", и это все еще возвратило пользовательскую запись без них имеющий адрес электронной почты.

Запрос выше работ, но из любопытства, я задался вопросом, делаю ли я его корректный путь.

92
задан 24 February 2010 в 15:13
поделиться

4 ответа

Есть разница между пустой строкой (email! = "") И NULL. NULL является нулем, а пустая строка - это что-то.

1
ответ дан 24 November 2019 в 06:22
поделиться

Пустое поле может быть либо пустая строка или NULL .

Для обработки обоих типов используйте:

email > ''

, который может получить выгоду от доступа к диапазону , если в вашей таблице много пустых записей электронной почты (обоих типов).

264
ответ дан 24 November 2019 в 06:22
поделиться

Да, вы делаете правильно. Вы проверяете, не является ли поле электронной почты пустой строкой. NULL означает, что данные отсутствуют. Пустая строка "" - это пустая строка длиной 0.

Вы также можете добавить нулевую проверку

AND (email != "" OR email IS NOT NULL)
35
ответ дан 24 November 2019 в 06:22
поделиться

Это сработает, но все еще существует возможность возврата нулевой записи. Хотя вы можете установить адрес электронной почты в строку нулевой длины при вставке записи, вы все равно захотите как-то обработать случай, когда в систему попадает NULL-адрес электронной почты.

     $aUsers=$this->readToArray('
     SELECT `userID` 
     FROM `users` 
     WHERE `userID` 
     IN(SELECT `userID`
               FROM `users_indvSettings`
               WHERE `indvSettingID`=5 AND `optionID`='.$time.')
     AND `email` != "" AND `email` IS NOT NULL
     ');
2
ответ дан 24 November 2019 в 06:22
поделиться
Другие вопросы по тегам:

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