• 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

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

  • 相关阅读:
    【web前端开发】HTML知识点超详细总结
    【web前端期末大作业】基于html关爱空巢老人网页设计与实现
    L2-031 深入虎穴
    Infineon+EB构建MCAL驱动包Demo实现片内外设使用
    腾讯云 Web 超级播放器开发实战
    【MySQL索引与优化篇】InnoDB数据存储结构
    JS小数运算精度丢失的问题
    静态代码块
    PHP while 和 do-while 循环 学习资料
    Sqoop数据导入操作
  • 原文地址:https://blog.csdn.net/weiguang102/article/details/126052928