BOOL_OR 函数
bool_or([DISTINCT] expr) [FILTER (WHERE condition)]
功能描述
BOOL_OR
BOOL_OR
函数用于判断一组布尔值中是否存在
TRUE
TRUE
。当输入的数据集中至少有一个
TRUE
TRUE
时,函数返回
TRUE
TRUE
;如果所有值都是
FALSE
FALSE
或
NULL
NULL
,则返回
FALSE
FALSE
。若不设置
DISTINCT
DISTINCT
参数,函数将计算所有值;设置
DISTINCT
DISTINCT
后,将计算去重后的值。
参数说明
expr
expr
(BOOLEAN
BOOLEAN
类型): 需要进行逻辑或运算的布尔表达式。
返回类型
- 返回值类型为
BOOLEAN
BOOLEAN
。当存在至少一个 TRUE
TRUE
值时,返回 TRUE
TRUE
;否则返回 FALSE
FALSE
。
- 如果输入数据全部为
NULL
NULL
,则返回 NULL
NULL
。
使用示例
- 存在至少一个
TRUE
TRUE
值时返回 TRUE
TRUE
:
SELECT bool_or(col) FROM VALUES (TRUE), (TRUE), (NULL) AS tab(col);
+--------------+
| bool_or(col) |
+--------------+
| true |
+--------------+
- 所有值都为
FALSE
FALSE
或 NULL
NULL
时返回 FALSE
FALSE
:
SELECT bool_or(col) FROM VALUES (FALSE), (FALSE), (NULL) AS tab(col);
+--------------+
| bool_or(col) |
+--------------+
| false |
+--------------+
- 使用
DISTINCT
DISTINCT
参数进行去重后计算:
SELECT bool_or(DISTINCT col) FROM VALUES (TRUE), (TRUE), (NULL) AS tab(col);
+-----------------------+
| bool_or(DISTINCT col) |
+-----------------------+
| true |
+-----------------------+
- 多个
FALSE
FALSE
值和 NULL
NULL
值的情况:
SELECT bool_or(col) FROM VALUES (FALSE), (NULL), (NULL) AS tab(col);
+--------------+
| bool_or(col) |
+--------------+
| false |
+--------------+
- 混合值的情况:
SELECT bool_or(col) FROM VALUES (TRUE), (FALSE), (NULL), (TRUE) AS tab(col);
+--------------+
| bool_or(col) |
+--------------+
| true |
+--------------+
- 使用 FILTER 子句条件性地计算布尔或:
SELECT bool_or(col1) FILTER (WHERE col2 > 1) FROM VALUES (FALSE, 2), (TRUE, 3), (FALSE, 1) AS tab(col1, col2);
+---------------------------------------------+
| bool_or(col1) FILTER (WHERE (col2 > 1)) |
+---------------------------------------------+
| true |
+---------------------------------------------+