SQL每日刷题—day6—交换性别

SQL—day6

题目

给定一个 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

预备知识


CASE WHEN
一旦满足了某一个WHEN, 则这一条数据就会退出CASE WHEN , 不再考虑其他CASE

CASE函数只返回第一个符合条件的值,剩下的CASE部分将会被自动忽略.


if(a,b,c)

if判断,如果a满足条件,返回b,否则返回c


ASCII(string) : 将字符串的第一个字符转换成ASCII码的形式
CHAR(int) : 将ASCII码转换成字符

char(ASCII(Col_Num)+1) #将字符顺延一位

思路

1. CASE WHEN 匹配

2. IF函数筛选

3. ASCII转化

代码

update salary
set sex = (
    case sex when 'm' then 'f' else 'm' end
);
update salary set sex = if(sex='m','f','m');
update salary set sex = char(ascii('m') + ascii('f') - ascii(sex));

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-salary

你可能感兴趣的:(SQL,sql,mysql)