Я хотел бы ограничить свой запрос отображением только строк, где определенное поле не пусто. Я нашел эту тему, где кто-то задал тот же вопрос и ему сказали использовать 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
При сравнении значения 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)
Я получил его, используя AND (partyfn IS NOT NULL AND partyfn != '')