【发布时间】:2021-10-15 18:40:57
【问题描述】:
我有一个带有布尔值的列,并且只想根据整个列的真值返回一个布尔值,例如如果列中的每个条目都为真,则返回真,否则返回假。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
标签: sql postgresql
我有一个带有布尔值的列,并且只想根据整个列的真值返回一个布尔值,例如如果列中的每个条目都为真,则返回真,否则返回假。
【问题讨论】:
标签: sql postgresql
Postgres 支持bool_and() 或等效的:
select bool_and(col)
from t;
还有其他方法。例如:
select count(*) filter (where col) = count(*)
【讨论】:
不存在假值可以询问PG
SELECT NOT EXISTS(SELECT null FROM t WHERE NOT boolcolumn);
如果任何值为 false,则子查询将返回至少一行。 EXISTS 将报告 true,将其翻转为 false。唯一的方法是让子查询不返回任何行,只有当所有行都为真时才会发生
你可能会发现它更合乎逻辑
SELECT TRUE = ALL (SELECT boolcol FROM t)
【讨论】:
试试这个
Select case when Count(BooleanField)=Sum(BooleanField) then 1 Else 0 End as Result
From MyTable
【讨论】: