SQL SELECT 中的布尔逻辑

Boolean logic in SQL SELECT

有没有更简单的实现方式

select (case when ((a is null) or (b is null)) then null else (case when
(a = b) then true else false end) end) from ...

在 PostgreSQL 或其他主要 RDBMS 中?

我觉得最简单的是:

select (a = b)

尽管这不完全是你的逻辑,因为如果 abNULL,则此 returns NULL。它可能已经足够好了。

如果你想要它 return false if either a or b are NULL but两者都不是,那么:

select (a = b) and nullif(coalesce(a, b) is null, true)

编辑:

因为您询问的是其他数据库,所以表达逻辑的一种方式是:

(case when a = b then 1 when a <> b then 0 end) as flag

这个 returns NULL 如果其中一个是 NULL.

你可以写

SELECT CASE
       WHEN (a IS NULL) OR (b IS NULL) THEN NULL
       WHEN (a = b) THEN 'true'
       ELSE 'false'
       END