MariaDB IF() 函数的基础用法与实例

MariaDB IF() 函数可以根据一个条件返回两个不同的值。

发布于

MariaDB 是一个开源的关系型数据库管理系统,它是 MySQL 的一个分支。MariaDB 提供了许多内置的函数,用于对数据进行各种操作和转换。本文将介绍一个常用的函数:IF() 函数,它可以根据一个条件返回两个不同的值。

语法

IF() 函数的语法如下:

IF(condition, value_if_true, value_if_false)

其中,condition 是一个逻辑表达式,可以是任何返回布尔值的表达式,比如比较,逻辑,或者存在等。value_if_truevalue_if_false 可以是任何类型的值,比如数字,字符串,日期,时间,二进制等。如果 conditionNULL,则返回 NULL。如果 conditionTRUE,则返回 value_if_true。如果 conditionFALSE,则返回 value_if_false

实例

下面是一些使用 IF() 函数的实例,以及相应的代码和输出结果。

根据条件返回不同的字符串

SELECT IF(1 > 2, 'True', 'False');
SELECT IF('A' = 'a', 'Equal', 'Not Equal');
SELECT IF(NULL IS NULL, 'Yes', 'No');
False
Equal
Yes

在这个实例中,我们使用 IF() 函数根据不同的条件返回不同的字符串。注意,字符串的比较是区分大小写的。

根据条件返回不同的数字

SELECT IF(10 MOD 2 = 0, 10 / 2, 10 * 2);
SELECT IF(3.14 BETWEEN 3 AND 4, ROUND(3.14), FLOOR(3.14));
SELECT IF(100 IN (10, 20, 30), 100 + 1, 100 - 1);
5.0000
3
99

在这个实例中,我们使用 IF() 函数根据不同的条件返回不同的数字。注意,MOD 是取余数的运算符,BETWEEN 是判断是否在某个范围内的运算符,IN 是判断是否在某个集合内的运算符,ROUND 是四舍五入的函数,FLOOR 是向下取整的函数。

根据条件返回不同的日期或时间

SELECT IF(CURDATE() = '2024-02-23', CURDATE(), DATE_ADD(CURDATE(), INTERVAL 1 DAY));
SELECT IF(CURTIME() < '12:00:00', CONCAT('Good morning, ', CURRENT_USER()), CONCAT('Good afternoon, ', CURRENT_USER()));
SELECT IF(NOW() > '2024-02-23 21:53:25', TIMESTAMPDIFF(SECOND, '2024-02-23 21:53:25', NOW()), 'Not yet');
2024-02-23
Good afternoon, root@localhost
952

在这个实例中,我们使用 IF() 函数根据不同的条件返回不同的日期或时间。注意,CURDATE() 是返回当前日期的函数,CURTIME() 是返回当前时间的函数,NOW() 是返回当前日期时间的函数,DATE_ADD() 是日期或时间加上一个间隔的函数,TIMESTAMPDIFF() 是计算两个日期或时间之间的差值的函数,CURRENT_USER() 是返回当前用户的函数,CONCAT() 是连接字符串的函数。

根据条件返回不同的二进制数据

SELECT IF(B'1010' & B'0101' = B'0000', B'1010' | B'0101', B'1010' ^ B'0101');
SELECT IF(X'FF' = UNHEX('FF'), X'FF' << 2, X'FF' >> 2);
SELECT IF(HEX('Hello') = '48656C6C6F', UNHEX('48656C6C6F'), HEX('World'));
15
0
Hello

在这个实例中,我们使用 IF() 函数根据不同的条件返回不同的二进制数据。注意,B 前缀表示一个二进制字面量,X 前缀表示一个十六进制字面量,& 是按位与的运算符,| 是按位或的运算符,^ 是按位异或的运算符,<< 是按位左移的运算符,>> 是按位右移的运算符,UNHEX() 是将一个十六进制字符串转换为二进制数据的函数,HEX() 是将一个二进制数据转换为十六进制字符串的函数。

根据条件返回不同的 NULL 值

SELECT IF(1 IS NULL, NULL, 1);
SELECT IF('' IS NULL, NULL, '');
SELECT IF(NULL IS NULL, NULL, NULL);
1

NULL

在这个实例中,我们使用 IF() 函数根据不同的条件返回不同的 NULL 值。注意,IS NULL 是判断是否为 NULL 的运算符,空字符串 '' 不等于 NULL,两个 NULL 值也不等于 NULL。

相关函数

除了 IF() 函数外,MariaDB 还提供了一些与条件相关的函数,如下:

  • IFNULL() 函数:如果第一个参数是 NULL,则返回第二个参数,否则返回第一个参数。
  • NULLIF() 函数:如果两个参数相等,则返回 NULL,否则返回第一个参数。
  • CASE 表达式:根据多个条件返回不同的值,可以是简单的或搜索的形式。
  • COALESCE() 函数:返回第一个非 NULL 的参数,如果所有参数都是 NULL,则返回 NULL。

结论

本文介绍了 MariaDB 的 IF() 函数的基础用法与实例,它可以根据一个条件返回两个不同的值。IF() 函数是一个常用的函数,它可以用于对数据进行分支,选择,判断等场景。