欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[LeetCode] 交换性别

程序员文章站 2022-05-15 13:26:19
给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。 (例如,将所有 f 值更改为 m,反之亦然)。 要求只使用一个更新(Update)语句,并且没有中间的临时表。 注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。 例如 : 运行你所编写的更 ......

给定一个 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... 流程控制语句

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

方法二:使用字母和ascii互转

update salary 
    set
        sex = char(ascii('m') + ascii('f') - ascii(sex));

方法三:使用if

update salasy
    set
        sex = if (sex = 'f','m','f'); 

摘自: