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 |
+--------------+--------------+
相关推荐
White_Mountain5 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
老王笔记5 小时前
GTID下复制问题和解决
mysql
Lojarro7 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
TianyaOAO7 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong7 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
W21559 小时前
Liunx下MySQL:表的约束
数据库·mysql
nbsaas-boot10 小时前
探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
数据库·mysql·json
奥顺10 小时前
PHPUnit使用指南:编写高效的单元测试
大数据·mysql·开源·php
苹果醋312 小时前
SpringBoot快速入门
java·运维·spring boot·mysql·nginx
ROCKY_81712 小时前
Mysql复习(一)
数据库·mysql