SQL/MySQL NOT NULL vs NOT EMPTY

Я хотел бы ограничить свой запрос отображением только строк, где определенное поле не пусто. Я нашел эту тему, где кто-то задал тот же вопрос и ему сказали использовать 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

Ответ 1

При сравнении значения 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)

Ответ 2

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