BOOL_AND 函数
bool_and([DISTINCT] expr) [FILTER (WHERE condition)]
功能描述
BOOL_AND
BOOL_AND
函数用于判断一组布尔值(
expr
expr
)是否全部为
TRUE
TRUE
。当所有给定的布尔值都为
TRUE
TRUE
时,函数返回
TRUE
TRUE
;否则,返回
FALSE
FALSE
。如果设置了
DISTINCT
DISTINCT
关键字,函数将仅计算不重复的布尔值。
参数说明
expr
expr
:需要进行逻辑与操作的布尔表达式。
返回类型
布尔值(
BOOLEAN
BOOLEAN
)。
使用示例
- 判断所有布尔值为
TRUE
TRUE
:
SELECT bool_and(col) FROM VALUES (TRUE), (TRUE), (TRUE) AS tab(col);
+---------------+
| bool_and(col) |
+---------------+
| TRUE |
+---------------+
- 包含
NULL
NULL
值的情况:
SELECT bool_and(col) FROM VALUES (TRUE), (TRUE), (NULL) AS tab(col);
+---------------+
| bool_and(col) |
+---------------+
| TRUE |
+---------------+
- 使用
DISTINCT
DISTINCT
关键字,去重后判断所有布尔值为 TRUE
TRUE
:
SELECT bool_and(DISTINCT col) FROM VALUES (TRUE), (TRUE), (TRUE) AS tab(col);
+------------------------+
| bool_and(DISTINCT col) |
+------------------------+
| TRUE |
+------------------------+
- 包含
FALSE
FALSE
值的情况:
SELECT bool_and(col) FROM VALUES (FALSE), (TRUE), (NULL) AS tab(col);
+---------------+
| bool_and(col) |
+---------------+
| FALSE |
+---------------+
- 仅包含一个
TRUE
TRUE
值和一个 FALSE
FALSE
值:
SELECT bool_and(col) FROM VALUES (TRUE), (FALSE) AS tab(col);
+---------------+
| bool_and(col) |
+---------------+
| FALSE |
+---------------+
- 使用 FILTER 子句条件性地计算布尔与:
SELECT bool_and(col1) FILTER (WHERE col2 > 1) FROM VALUES (TRUE, 2), (TRUE, 3), (FALSE, 1) AS tab(col1, col2);
+----------------------------------------------+
| bool_and(col1) FILTER (WHERE (col2 > 1)) |
+----------------------------------------------+
| TRUE |
+----------------------------------------------+