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)
尽管这不完全是你的逻辑,因为如果 a
或 b
是 NULL
,则此 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
有没有更简单的实现方式
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)
尽管这不完全是你的逻辑,因为如果 a
或 b
是 NULL
,则此 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