磨刀霍霍:SQL 中的 CASE WHEN

SQL 中 CASE WHEN 的用法

使用情况

  • 简单 CASE 函数
CASE SEX = '1' THEN 'Girl' ELSE 'BOY' END
CASE SEX = '0' THEN 'BOY' ELSE 'GILR' END
  • CASE 搜索函数
CASE WHEN SEX = '1' THEN 'GRIL'
WHEN SEX = '0' THEN 'BOY'
ELSE 'OTHERS'
END

等值转换

CASE WHEN SEX = '1' THEN 'GRIL'
WHEN SEX = '0' THEN 'BOY'
ELSE 'OTHERS'
END

范围转换

CASE WHEN SCORE >= '90' THEN '优秀'
WHEN SCORE >= '80' THEN '良好'
WHEN SCORE >= '60' THEN '及格'
ELSE '不及格'
END

列转行

练习题

原题地址:627. 交换工资

题解 1

update salary 
set
sex = case sex
when 'm' then 'f'
else 'm'
end

题解 2

个人觉得非常骚气的解法~

参考题解

update salary set sex = char(ASCII(sex) ^ ASCII('m') ^ ASCII('f') )

异或ASCII 码 的用法很特别~

参考资料: