BOOL_XOR [聚合]

处理布尔值并返回布尔值结果。特别是只有一个输入值为 true 时,BOOL_XOR 返回 t。否则,它返回 f

行为类型

不可变

语法

BOOL_XOR ( expression )

参数

表达式
一个布尔数据类型或任何可隐式强制转换为布尔数据类型的非布尔数据类型。

示例

以下示例显示了如何使用聚合函数 BOOL_ANDBOOL_ORBOOL_XOR。示例表 mixers 包含模型和颜色列。

=> CREATE TABLE mixers(model VARCHAR(20), colors VARCHAR(20));
CREATE TABLE

将示例数据插入到表中。该示例为每个模型添加了两个颜色字段。

=> INSERT INTO mixers
SELECT 'beginner', 'green'
UNION ALL
SELECT 'intermediate', 'blue'
UNION ALL
SELECT 'intermediate', 'blue'
UNION ALL
SELECT 'advanced', 'green'
UNION ALL
SELECT 'advanced', 'blue'
UNION ALL
SELECT 'professional', 'blue'
UNION ALL
SELECT 'professional', 'green'
UNION ALL
SELECT 'beginner', 'green';
 OUTPUT
--------
      8
(1 row)

查询该表。结果显示有两个蓝色混合器的模型 (BOOL_AND),有一个或两个蓝色混合器的模型 (BOOL_OR),以及专门显示有不超过一个蓝色混合器的模型 (BOOL_XOR)。

=> SELECT model,
BOOL_AND(colors= 'blue')AS two_blue,
BOOL_OR(colors= 'blue')AS one_or_two_blue,
BOOL_XOR(colors= 'blue')AS specifically_not_more_than_one_blue
FROM mixers
GROUP BY model;

    model     | two_blue | one_or_two_blue | specifically_not_more_than_one_blue
--------------+----------+-----------------+-------------------------------------
 advanced     | f        | t               | t
 beginner     | f        | f               | f
 intermediate | t        | t               | f
 professional | f        | t               | t
(4 rows)

另请参阅