• 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

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

  • 相关阅读:
    大数据应用概览(林子雨慕课课程)
    JavaIO之read()和readline
    ROS 语音交互(三) tts
    优思学院:什么是零缺陷(C=0)抽样方案?用了就可实现“零缺陷”吗?
    Matlab绘图(1)通过属性检查器调整绘图
    vue 部分知识点总结
    SonarQube的使用心得
    Docker-Compose安装Gitlab
    Day_43插入排序
    安全基础~通用漏洞6
  • 原文地址:https://blog.csdn.net/weiguang102/article/details/126052928