postgres: Почему SELECT NULL <> '' возвращает FALSE? - PullRequest
0 голосов
/ 08 января 2020

Недавно я выполнял запрос к столбцу данных, который содержал строки, пустые строки и нули. Я хотел сохранить все, кроме пустых строк, поэтому, естественно, я сделал что-то вроде

WHERE my_row <> ''

Однако я обнаружил, что это также удалило мои нули. :(

Я немного покопался и нашел

SELECT NULL = ''  -- Returns False. No surprise here

Но

SELECT NULL <> ''  -- Also returns False. Huh?

Может кто-нибудь объяснить мне это?

1 Ответ

1 голос
/ 08 января 2020

Оказывается, когда вы выполняете стандартный оператор сравнения с NULL, вы получаете FALSE, NOT TRUE или NULL.

Если вы хотите сделать сравнение для столбца с NULL в нем, вы можете использовать IS [NOT] DISTINCT FROM вместо = или <>, и он будет обрабатывать NULL как значение.

Я использовал следующее, и он удалил мои пустые строки, не удаляя мои NULL

WHERE my_row IS DISTINCT FROM ''

https://www.postgresql.org/docs/current/functions-comparison.html

...