MySQL中是否有一种方法可以通过单个查询来反转布尔字段?
是的,您可以使用if()
MySQL中的函数来反转布尔字段。语法如下-
UPDATE yourTableName SET yourBooleanColumnName = IF(yourBooleanColumnName,0,1);
为了理解上述语法,让我们创建一个表。创建表的查询如下-
mysql> create table ReverseBooleanField -> ( -> Id int NOT NULL AUTO_INCREMENT, -> isValid BOOLEAN -> , -> PRIMARY KEY(Id) -> );
现在,您可以使用insert命令在表中插入一些记录。查询如下-
mysql> insert into ReverseBooleanField(isValid) values(true); mysql> insert into ReverseBooleanField(isValid) values(false); mysql> insert into ReverseBooleanField(isValid) values(true); mysql> insert into ReverseBooleanField(isValid) values(true); mysql> insert into ReverseBooleanField(isValid) values(false);
使用select语句显示表中的所有记录。查询如下-
mysql> select *from ReverseBooleanField;
以下是输出-
+----+---------+ | Id | isValid | +----+---------+ | 1 | 1 | | 2 | 0 | | 3 | 1 | | 4 | 1 | | 5 | 0 | +----+---------+ 5 rows in set (0.00 sec)
MySQL内部将BOOLEAN转换为TINYINT(1),将true设置为1,将false设置为0。
现在,让我们在单个查询中反转布尔字段-
mysql> update ReverseBooleanField set isValid = if(isValid,0,1); Rows matched − 5 Changed − 5 Warnings − 0
使用select语句检查布尔字段是否反转。查询如下-
mysql> select *from ReverseBooleanField;
以下是输出-
+----+---------+ | Id | isValid | +----+---------+ | 1 | 0 | | 2 | 1 | | 3 | 0 | | 4 | 0 | | 5 | 1 | +----+---------+ 5 rows in set (0.00 sec)