首页/数据/SQL 速查/布尔表达式与真值类型
本包目录(311 条)

布尔表达式与真值类型

PostgreSQL 有原生 boolean 类型,MySQL 用 tinyint(1) 与 0/1 近似;两库在 WHERE 中直接使用布尔表达式的宽严不同。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT 1 = 1;             -- 1
SELECT TRUE, FALSE;       -- 1, 0
SELECT * FROM t WHERE flag = 1;
SELECT * FROM t WHERE flag;         -- 0/1 可直接当条件

PostgreSQL

PostgreSQL
SELECT true AND false;    -- false
SELECT 1 = 1;             -- true
SELECT * FROM t WHERE flag;         -- flag 必须是 boolean 列
SELECT * FROM t WHERE flag = true;
MySQL无原生 BOOLEAN,TRUE/FALSE 是 1/0 的别名;表达式结果为 0/1
PostgreSQL原生 boolean:true / false / NULL
迁移tinyint(1) 改为 boolean 后,WHERE flag 与 flag=1 的写法要调整

易错点

  • PostgreSQL 中 WHERE flag = 1 对 boolean 列会直接报类型错误,改写为 flag = true 或 flag IS TRUE
  • 布尔列索引在条件区分度极低(如绝大多数为 true)时通常不会被优化器选用

数据来源与参考

  • MySQL 8.0 Reference Manual · Boolean Literals
  • PostgreSQL Documentation · Boolean Type
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌