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: 如果 conditionTRUE 返回此值。

expr_if_false: 如果 conditionFALSE 返回此值。

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:expr1NULL 时,返回 expr2

如果 expr1NULLIFNULL() 函数返回 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 = expr2NULLIF() 函数返回 NULL,否则返回 expr1

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


+--------------+--------------+
| NULLIF(1, 1) | NULLIF(1, 2) |
+--------------+--------------+
|         NULL |            1 |
+--------------+--------------+
相关推荐
白露与泡影38 分钟前
深入理解MySQL事务隔离级别:MVCC机制与Next-Key Lock如何解决幻读问题?
数据库·mysql
Gong-Yu39 分钟前
MySQL数据库运维——性能优化进阶2️⃣
运维·数据库·mysql·性能优化
峥无1 小时前
MySQL 最全数据类型详解(数值/字符串/日期/枚举集合)
数据库·mysql
Amnesia0_01 小时前
MySQL的访问和数据流动
数据库·mysql
Arbori_262151 小时前
找回mysql root 密码
数据库·mysql
ejinxian3 小时前
PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等数据库
数据库·mysql·mongodb
大白要努力!11 小时前
MySQL 8.0 + Navicat 完整操作指南
数据库·mysql
云絮.12 小时前
数据库操作
数据库·mysql·算法·oracle
设计师小聂!14 小时前
宝塔 Linux 面板保姆级教程
linux·mysql·开源·运维开发
Tong Z15 小时前
Mysql DDL中的ALGORITHM
数据库·mysql