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;希望这些信息对你有所帮助!