• MySQL 流程控制


    MySQL流程控制 IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

    MySQL IF() 函数的使用

    SELECT IF(TRUE,'A','B');    -- 输出结果:A
    SELECT IF(FALSE,'A','B');   -- 输出结果:B
    
    • 1
    • 2
    SELECT
    	id,
    title,
    IF (
    	url IS NULL,
    	'没奖金呵呵',
    	'有奖金嘻嘻'
    ) AS 链接
    FROM
    	video;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述
    在这里插入图片描述

    mysql> select if(true,'hello','world');
    +--------------------------+
    | if(true,'hello','world') |
    +--------------------------+
    | hello                    |
    +--------------------------+
    1 row in set (0.00 sec)
    
    mysql> select if(false,'hello','world');
    +---------------------------+
    | if(false,'hello','world') |
    +---------------------------+
    | world                     |
    +---------------------------+
    1 row in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    分支结构之 IF

    IF 表达式1 THEN 操作1
    [ELSEIF 表达式2 THEN 操作2]……
    [ELSE 操作N]
    END IF
    
    • 1
    • 2
    • 3
    • 4

    IFNULL() 函数的使用

    SELECT IFNULL(NULL,'B');    -- 输出结果:B
    SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO
    
    • 1
    • 2

    NULLIF() 函数的使用

    SELECT NULLIF('A','A');     -- 输出结果:null
    SELECT NULLIF('A','B');     -- 输出结果:A
    
    • 1
    • 2

    ISNULL() 函数的使用

    SELECT ISNULL(NULL);        -- 输出结果:1
    SELECT ISNULL('HELLO');     -- 输出结果:0
    
    • 1
    • 2

    case 函数

    CASE 表示函数开始,END 表示函数结束。
    如果 condition1 成立,则返回 result1,
    如果 condition2 成立,则返回 result2,
    当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

    CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    WHEN conditionN THEN resultN
    ELSE result
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    传参的写法:

    在这里插入图片描述

    不传参的写法

    在这里插入图片描述

    实操案例

    准备数据

    -- 创建订单表
    CREATE TABLE orders (
    	oid INT PRIMARY KEY,
    	-- 订单id
    	price DOUBLE,
    	-- 订单价格
    	payType INT -- 支付类型(1:微信支付 2:支付宝支付 3:银行卡支付 4:其他)
    );
    
    insert into orders values(1,1200,1);
    insert into orders values(2,1000,2);
    insert into orders values(3,200,3);
    insert into orders values(4,3000,1);
    insert into orders values(5,1500,2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    示例 1

    在这里插入图片描述

    select 
    *,
    case
    when payType=1 then "微信支付"
    when payType=2 then "支付宝支付"
    when payType=3 then "银行卡支付"
    else "其他支付方式"
    end as payTypeStr
    from orders;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    示例 2

    在这里插入图片描述

    select 
    *,
    case payType
    when 1 then "微信支付"
    when 2 then "支付宝支付"
    when 3 then "银行卡支付"
    else "其他支付方式"
    end as payTypeStr
    from orders;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    上述分别是用了等值判断和值的映射去实现,一般我更喜欢使用第一种,因为有时候还可以范围运算。

  • 相关阅读:
    【Python性能优化实例】计算 numpy 数组首尾为 0 的数量
    双软认证具体办理流程是什么
    解决wave.Error: unknown format: 3
    实战真知 | 金融企业如何深度融合云原生技术?
    记录:Unity脚本的编写3.0
    zookeeper+kafka群集
    使用Redis实现缓存及对应问题解决
    抖音API:item_password-获取douyin分享口令url
    图像识别技术
    一种用于保证多方子系统数据一致性的方法
  • 原文地址:https://blog.csdn.net/weiguang102/article/details/126052928