一、case when 语句
基本语法1:
SELECT
CASE [被判断字段]
WHEN [条件1] THEN [条件1结果]
WHEN [条件2] THEN [条件2结果]
ELSE [都不符合时的结果]
END
AS
[结果集别名]
FROM [表名];
被判断字段与条件1、条件2做比较,若比较结果相同则返回对应的THEN的结果,若都不符合,则返回ELSE的结果
LeetCode练习题:627. 交换工资 https://leetcode-cn.com/problems/swap-salary/
为了减小文章篇幅,方便阅读,题目请点击链接跳转查看
【题解】
UPDATE salary
SET
sex = CASE sex
WHEN 'm' THEN 'f'
ELSE 'm'
END;
基本语法2:
SELECT
CASE
WHEN [布尔类型结果] THEN [条件1结果]
WHEN [布尔类型结果] THEN [条件2结果]
ELSE [都不符合时的结果]
END
AS
[结果集别名]
FROM [表名];
判断条件从前向后直到有一个WHEN为true时返回对应的结果,如果WHEN都不成立返回ELSE的结果.
LeetCode练习题:626. 换座位 https://leetcode-cn.com/problems/exchange-seats/
【题解】
SELECT (CASE
WHEN MOD(id,2) = 1 AND id = (SELECT COUNT(*) FROM seat) THEN id
WHEN MOD(id,2) = 1 THEN id+1
ElSE id-1
END) AS id, student
FROM seat
ORDER BY id;
二、if语句
基本语法:
IF (value1,value2,value3)
**value1** 为布尔表达式或bu布尔值
**value2** 当value1结果为true时返回的结果
**value3** 当value1结果为false时返回的结果
LeetCode练习题:627. 交换工资 https://leetcode-cn.com/problems/swap-salary/
【题解】
UPDATE salary
SET sex = IF(sex = 'm','f','m')
三、ifnull语句
SELECT IFNULL(value1,value2) AS status;
当value1为null时,返回结果为value2
当value1非null时,返回结果为value1
【示例】
SELECT IFNULL(null,'123') AS status;
结果为: 123
四、nullif语句
SELECT NULLIF(value1,value2);
当value1与value2的结果相同时,输出结果为null;
否则为value1的结果;
【示例1】
SELECT NULLIF(111,111);
SELECT NULLIF('111',111);
SELECT NULLIF(111,'111');
SELECT NULLIF('111','111');
以上四个结果都为null;
【示例2】
SELECT NULLIF(111,222);
SELECT NULLIF('111',222);
SELECT NULLIF(111,'222');
SELECT NULLIF('111','222');
以上四个结果都为value1的值:111
文章部分内容参考自:https://www.w3cschool.cn/xinyang/?