Boolean 类型
| 名称 | 别名 | 描述 |
|---|---|---|
BOOLEAN | BOOL | 逻辑布尔值(true / false) |
BOOLEAN 类型表示真值判断(“true” 或 “false”)。在 SQL 中,BOOLEAN 字段还可以有第三种状态“unknown”,由 SQL NULL 值表示。
选择 BOOLEAN 列可能出现的三种值:
SELECT true, false, NULL::BOOLEAN;
布尔值可以通过字面量 true 和 false 显式创建。不过,更常见的是它们由比较或逻辑连接的结果产生。例如,比较 i > 10 会得到一个布尔值。布尔值可用于 SQL 语句的 WHERE 和 HAVING 子句中,以从结果中过滤元组。在这种情况下,谓词计算为 true 的元组会通过过滤,而计算为 false 或 NULL 的元组会被过滤掉。请看下面的示例:
创建一个包含 5、15 和 NULL 的表:
CREATE TABLE integers (i INTEGER);
INSERT INTO integers VALUES (5), (15), (NULL);
选择所有满足 i > 10 的记录:
SELECT * FROM integers WHERE i > 10;
在该情况下,5 和 NULL 会被过滤掉(5 > 10 是 false,NULL > 10 是 NULL):
| i |
|---|
| 15 |
逻辑连接
AND / OR 连接可用于组合布尔值。
下表是 AND 连接(即 x AND y)的真值表。
X | X AND true | X AND false | X AND NULL |
|---|---|---|---|
| true | true | false | NULL |
| false | false | false | false |
| NULL | NULL | false | NULL |
下表是 OR 连接(即 x OR y)的真值表。
X | X OR true | X OR false | X OR NULL |
|---|---|---|---|
| true | true | true | true |
| false | true | false | NULL |
| NULL | true | NULL | NULL |