Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql并与空字段进行比较_Postgresql_Select_Null_Compare - Fatal编程技术网

Postgresql并与空字段进行比较

Postgresql并与空字段进行比较,postgresql,select,null,compare,Postgresql,Select,Null,Compare,似乎在PostgreSQL中,empty_字段!=1(或某些其他值)为FALSE。如果这是真的,有人能告诉我如何与空字段进行比较吗 我有以下查询,翻译为“选择用户组中尚未投票的所有帖子: SELECT p.id, p.body, p.author_id, p.created_at FROM posts p LEFT OUTER JOIN votes v ON v.post_id = p.id WHERE p.group_id = 1 AND v.user_id != 1 即使投票表是空的,它

似乎在PostgreSQL中,
empty_字段!=1
(或某些其他值)为FALSE。如果这是真的,有人能告诉我如何与空字段进行比较吗

我有以下查询,翻译为“选择用户组中尚未投票的所有帖子:

SELECT p.id, p.body, p.author_id, p.created_at
FROM posts p
LEFT OUTER JOIN votes v ON v.post_id = p.id
WHERE p.group_id = 1 
AND v.user_id != 1
即使投票表是空的,它也不会输出任何内容。也许我的查询有问题,而不是上面的逻辑有问题

编辑:似乎将
v.user\u id!=1
更改为
v.user\u id有别于1
,完成了这项工作。 从PostgreSQL文档:

对于非空输入,与 与运算符相同。 但是,当两个输入都为空时,它将 将返回false,而当只有一个 输入为null,则返回true


如果要返回v.user_id为NULL的行,则需要专门处理该行。解决该问题的一种方法是写入:

AND COALESCE(v.user_id, 0) != 1
另一个选择是:

AND (v.user_id != 1 OR v.user_id IS NULL)

编辑:spacemonkey是正确的,在PostgreSQL中,您应该使用的
与此处的
不同。

NULL是一个未知值,因此它永远不能等于某个值。请研究使用COALESCE函数。

可能与各种其他问题重复,例如,,…似乎与执行任务不同too@spacemonkey:你说得对,那太好了实际上,在PostgreSQL中,这是一个更好的方法。我完全忽略了它。