MySQL 中并没有专门的布尔(boolean)数据类型,而是使用 TINYINT(1)
类型来表示布尔值。通常情况下,0 表示 FALSE
,1 表示 TRUE
。
TRUE
或 FALSE
。在 MySQL 中,通过 TINYINT(1)
来模拟布尔类型。TRUE
变为 FALSE
,把 FALSE
变为 TRUE
。TINYINT(1)
作为布尔值的表示非常简单且高效。FALSE
,1 表示 TRUE
。假设我们有一个表 users
,其中有一个字段 is_active
表示用户是否激活:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
is_active TINYINT(1)
);
插入一些数据:
INSERT INTO users (name, is_active) VALUES ('Alice', 1);
INSERT INTO users (name, is_active) VALUES ('Bob', 0);
查询所有未激活的用户:
SELECT * FROM users WHERE is_active = 0;
对 is_active
字段进行取反操作:
SELECT id, name, IF(is_active = 1, 0, 1) AS is_active_reversed FROM users;
is_active
字段取值为 2 或其他非 0/1 的值?原因:可能是由于数据插入或更新时,错误的值被插入到了 is_active
字段中。
解决方法:
is_active
字段的值只能是 0 或 1。UPDATE users SET is_active = 0 WHERE is_active > 1;
解决方法:
使用 IF
函数或 CASE
语句进行取反操作:
SELECT id, name, IF(is_active = 1, 0, 1) AS is_active_reversed FROM users;
或者使用 CASE
语句:
SELECT id, name,
CASE WHEN is_active = 1 THEN 0 ELSE 1 END AS is_active_reversed
FROM users;
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云