Postgresql postgres:为什么SELECT NULL''返回FALSE?

Postgresql postgres:为什么SELECT NULL''返回FALSE?,postgresql,null,Postgresql,Null,我最近在一个包含字符串、空字符串和空字符串的数据列上运行一个查询。 我想保留除了空字符串以外的所有内容,所以我自然而然地做了类似的事情 WHERE my_row <> '' 但是 有人能给我解释一下吗?事实证明,每当你对NULL做一个标准的比较运算符时,就会得到FALSE、nottrue或NULL 如果要对包含NULL的列进行比较,可以使用IS[NOT]DISTINCT代替=or,并将NULL视为一个值 我使用了以下命令,它删除了我的空字符串,而没有删除空字符串 WHERE my_

我最近在一个包含字符串、空字符串和空字符串的数据列上运行一个查询。 我想保留除了空字符串以外的所有内容,所以我自然而然地做了类似的事情

WHERE my_row <> ''
但是


有人能给我解释一下吗?

事实证明,每当你对NULL做一个标准的比较运算符时,就会得到FALSE、nottrue或NULL

如果要对包含NULL的列进行比较,可以使用IS[NOT]DISTINCT代替=or,并将NULL视为一个值

我使用了以下命令,它删除了我的空字符串,而没有删除空字符串

WHERE my_row IS DISTINCT FROM ''

这是因为当涉及NULL时,您不再关注结果总是True和False的二进制布尔2状态逻辑。使用空值时,您将处理结果为真、假或空的三级或三态逻辑。对Null应用的任何比较运算符都将导致Null。
SELECT NULL <> ''  -- Also returns False. Huh?
WHERE my_row IS DISTINCT FROM ''