MySQL中的分支判断—case when、if、ifnull、nullif语句(超详细)

一、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 [表名];

判断条件从前向后直到有一个WHENtrue时返回对应的结果,如果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/?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值