【发布时间】:2019-12-11 08:58:21
【问题描述】:
我的任务表的状态为 smallint(5)。它有 0 或 1 或 2 个值。
当我运行这个查询时,它会给我结果
SELECT * FROM `tasks` WHERE `status` = 'EMPTY'
status 中没有 EMPTY 值,那我怎么才能得到结果呢?
【问题讨论】:
我的任务表的状态为 smallint(5)。它有 0 或 1 或 2 个值。
当我运行这个查询时,它会给我结果
SELECT * FROM `tasks` WHERE `status` = 'EMPTY'
status 中没有 EMPTY 值,那我怎么才能得到结果呢?
【问题讨论】:
隐式数据转换例如发生
select cast('empty' as int);
+----------------------+
| cast('empty' as int) |
+----------------------+
| 0 |
+----------------------+
1 row in set, 1 warning (0.00 sec)
恐怕这取决于你自己来比较喜欢和喜欢。
【讨论】:
如果值只能是0、1 或2,那么这应该会给出所有行的0 状态:
SELECT *
FROM tasks
WHERE status = 0
如果有NULL 值,那么您可以通过将WHERE 更改为
WHERE status IS NULL
NULL 与 0 不同,因此要同时获得两者,您需要这样做:
WHERE status IS NULL OR status = 0
【讨论】:
status = 'EMPTY' 的结果,其中 EMPTY 是字符串,它不等于 0 或 1 或 2