力扣数据库题目627变更性别
给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。
注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。
例如:
id name sex salary 1 A m 2500 2 B f 1500 3 C m 5500 4 D f 500
运行你所编写的更新语句之后,将会得到以下表:
id name sex salary 1 A f 2500 2 B m 1500 3 C f 5500 4 D m 500
来源:力扣(LeetCode)
SQL中的test前缀是库名,不是无中生有的SQL
UPDATE test.salary SET sex = CASE sex WHEN 'f' THEN 'm' WHEN 'm' THEN 'f' ELSE '' END;
也可以使用IF方法,目的就是当性别是f时获得m,性别是m时获得f。
UPDATE test.salary SET sex = REPLACE('fm',sex,'');
211是fm的ASCII编码之和
UPDATE test.salary SET sex = CHAR(211-ASCII(sex)USING ASCII);
11是fm的ASCII编码之异或
UPDATE test.salary SET sex = CHAR(11^ASCII(sex) USING ASCII);
11118是fm的ASCII编码之乘积
UPDATE test.salary SET sex = CHAR(11118/ASCII(sex) USING ASCII);
后面三个方案基本雷同,对于开发来说,了解其中之一就可以
CREATE TABLE salary
(
id
int NOT NULL AUTO_INCREMENT,
name
varchar(1) NOT NULL DEFAULT '',
sex
varchar(1) NOT NULL DEFAULT '',
salary
int NOT NULL DEFAULT '0',
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
INSERT INTO test
.salary
(id
,name
,sex
,salary
)
VALUES(1,'A','m',2500),(2,'B','f',1500),(3,'C','m',5500),(4,'D','f',500);
Original: https://www.cnblogs.com/klarck/p/14083521.html
Author: 一剑破万法
Title: 力扣数据库题目627变更性别
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591682/
转载文章受原作者版权保护。转载请注明原作者出处!