SQL / MySQL НЕ NULL против НЕ ПУСТО

10

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

Каков правильный способ сделать это? Является ли Null тем же, что и пустым в SQL/MySQL?

Мой запрос, если вас интересует: SELECT * FROM records WHERE (party_zip='49080' OR party_zip='49078' OR party_zip='49284' ) AND partyfn IS NOT NULL

  • 0
    Вы можете опубликовать пример данных
  • 0
    К сожалению, я не могу опубликовать фактические данные из моих таблиц, поскольку они содержат конфиденциальную информацию. Вы можете написать несколько с двумя строками, если вы хотите проверить.
Показать ещё 1 комментарий
Теги:
null

2 ответа

7
Лучший ответ

При сравнении значения NULL результат в большинстве случаев становится NULL, и для этого он имеет тот же результат, что и 0 (значение FALSE в MySQL) внутри WHERE и HAVING.

В данном примере вам не нужно включать IS NOT NULL. Вместо этого просто используйте party_zip IN ('49080', '49078', '49284'). NULL не может быть 49080, 49078, 49284 или любым другим номером или строкой.

То, что вам нужно подумать, - это проверять пустые значения. !party_zip не вернет TRUE/1, если значение NULL. Вместо этого используйте OR columns IS NULL или !COALESCE(party_zip, 0)

23

Я получил его, используя AND (partyfn IS NOT NULL AND partyfn != '')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню