postgresql 中无法按预期工作的情况(在空值上)



我有一个名为people的表

<表类> id 名称 lastname tbody><<tr>1约翰道明>2罗伯特。威廉姆斯3彼得沃克

不匹配任何行的顶级SQL查询将返回零行,这与返回NULL不同。这是有意义的,因为它可以让您区分没有这样的用户时SELECT email FROM users WHERE id=4的结果和有用户但其电子邮件为空的结果。

但是,不返回任何行的子查询将按您期望的方式计算为NULL。所以你可以这样重写你的代码:

SELECT COALESCE( (SELECT id FROM people WHERE id = '4'), 0 );

COALESCE(x,y)CASE WHEN x IS NULL THEN y ELSE x END的简写。在这种情况下,当x的表达式很长并且你不想写两次时,它是很有用的。

最新更新