MySQL 【流程控制】函数

目录

[1、CASE 语句用于流程控制中的多分支情况。](#1、CASE 语句用于流程控制中的多分支情况。)

[2、IF() 函数根据测试条件是否为真分别返回指定的值。](#2、IF() 函数根据测试条件是否为真分别返回指定的值。)

[3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。](#3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。)

[4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。](#4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。)


1、CASE 语句用于流程控制中的多分支情况。

语法:

**CASE value
WHEN compare_value THEN result

WHEN compare_value THEN result ...

ELSE result

END**

或者:

**CASE
WHEN condition THEN result

WHEN condition THEN result ...

ELSE result

END**

返回值:

CASE 语句返回 condition 为真或者 value = compare_value 为真的 THEN 子句中指定的值。

sql 复制代码
SELECT
    weekday_index AS `Weekday Index`,
    CASE weekday_index
        WHEN 0 THEN 'Monday'
        WHEN 1 THEN 'Tuesday'
        WHEN 2 THEN 'Wednesday'
        WHEN 3 THEN 'Thursday'
        WHEN 4 THEN 'Friday'
        WHEN 5 THEN 'Saturday'
        WHEN 6 THEN 'Sunday'
        ELSE 'Error'
    END AS `Weekday Name`
FROM
    test_case_weekday;


+---------------+--------------+
| Weekday Index | Weekday Name |
+---------------+--------------+
|             0 | Monday       |
|             1 | Tuesday      |
|             2 | Wednesday    |
|             3 | Thursday     |
|             4 | Friday       |
|             5 | Saturday     |
|             6 | Sunday       |
+---------------+--------------+
sql 复制代码
SELECT
    weekday_index AS `Weekday Index`,
    CASE
        WHEN weekday_index = 0 THEN 'Monday'
        WHEN weekday_index = 1 THEN 'Tuesday'
        WHEN weekday_index = 2 THEN 'Wednesday'
        WHEN weekday_index = 3 THEN 'Thursday'
        WHEN weekday_index = 4 THEN 'Friday'
        WHEN weekday_index = 5 THEN 'Saturday'
        WHEN weekday_index = 6 THEN 'Sunday'
        ELSE 'Error'
    END AS `Weekday Name`
FROM
    test_case_weekday;

2、IF() 函数根据测试条件是否为真分别返回指定的值。

语法:

IF(condition, expr_if_true, expr_if_false)

*condition:*测试条件表达式。

expr_if_true: 如果 condition 为 TRUE 返回此值。

expr_if_false: 如果 condition 为 FALSE 返回此值。

sql 复制代码
SELECT IF(1 > 2, 'NO', 'YES'), IF(2 > 1, 'NO', 'YES');


+------------------------+------------------------+
| IF(1 > 2, 'NO', 'YES') | IF(2 > 1, 'NO', 'YES') |
+------------------------+------------------------+
| YES                    | NO                     |
+------------------------+------------------------+

3、IFNULL() 函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。

语法:

IFNULL(expr1, expr2)

expr1: 判断此表达式是否为 NULL。

expr2: 当 expr1 为 NULL 时,返回 expr2。

如果 expr1 为 NULL,IFNULL() 函数返回 expr1,否则返回 expr2。

sql 复制代码
SELECT
    IFNULL(NULL, 'It is NULL'),
    IFNULL('I am not NULL', 'I am NULL');


+----------------------------+--------------------------------------+
| IFNULL(NULL, 'It is NULL') | IFNULL('I am not NULL', 'I am NULL') |
+----------------------------+--------------------------------------+
| It is NULL                 | I am not NULL                        |
+----------------------------+--------------------------------------+

4、NULLIF() 函数根据两个参数是否相等决定返回 NULL 还是第一个参数。

NULLIF(expr1, expr2)

*expr1:*一个值或者表达式。

*expr2:*另一个值或者表达式。

如果 expr1 = expr2,NULLIF() 函数返回 NULL,否则返回 expr1。

sql 复制代码
SELECT
    NULLIF(1, 1),
    NULLIF(1, 2);


+--------------+--------------+
| NULLIF(1, 1) | NULLIF(1, 2) |
+--------------+--------------+
|         NULL |            1 |
+--------------+--------------+
相关推荐
2401_8967321311 小时前
MySQL小笔记
mysql
程序员塔塔喵13 小时前
【MySQL篇|第七篇】MySQL事务
数据库·mysql·mysql事务
_孤傲_14 小时前
快速掌握 MySQL 语法
数据库·后端·mysql
为思念酝酿的痛16 小时前
MySQL的操作
数据库·mysql
Umi·18 小时前
MySQL库表操作
数据库·mysql
星光开发者19 小时前
基于springboot智慧草场牛羊管理系统-计算机毕设【课程设计】50360
vue.js·spring boot·后端·mysql·php·课程设计·express
猫咪很可爱20 小时前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql
猫咪很可爱20 小时前
MySQL 5.7 备份恢复后函数与存储过程丢失:原因分析与正确备份姿势
数据库·mysql·bug·shell
秦时明月之君临天下21 小时前
MySQL purge 参数详解:innodb_purge_threads 与 innodb_purge_batch_size
数据库·mysql·1024程序员节
努力努力再努力wz1 天前
【C++ 高阶系列】C++ 高性能网络编程:当 Reactor 遇见协程:从 epoll 回调到异步 MySQL,彻底打通任务挂起与恢复
网络·c++·mysql