算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 变更性别,我们先来看题面:
https://leetcode.cn/problems/swap-salary/
请你编写一个 SQL 查询来交换所有的 'f' 和 'm' (即,将所有 'f' 变为 'm' ,反之亦然),仅使用 单个 update 语句 ,且不产生中间临时表。
注意,你必须仅使用一条 update 语句,且 不能 使用 select 语句。
查询结果如下例所示。
示例
解题
这题有4种解法,都分享给大家看看
UPDATE salary
SET
sex = CASE sex
WHEN 'm' THEN 'f'
ELSE 'm'
END;
update salary set sex = char(ascii('m') + ascii('f') - ascii(sex));
update salary
set sex = replace("fm", sex, "")
update salary set sex = char(ASCII(sex) ^ ASCII('m') ^ ASCII('f') ) ;
上期推文: