MySQL中有哪些流程函数

44次阅读
没有评论

共计 2549 个字符,预计需要花费 7 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章将为大家详细讲解有关 MySQL 中有哪些流程函数,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

流程函数是 MySQL 相对常用的一类函数, 用户可以使用这类函数在一个 SQL 语句中实现条件选择, 这样能够提高效率.

下面列出了 MySQL 跟条件有关的流程函数

函数功能 IF(expr1,expr2,expr3) 如果 expr1 是真, 返回 expr2, 否则返回 expr3IFNULL(expr1,expr2) 如果 expr1 不是 NULL, 返回 expr1, 否则返回 expr2CASE WHEN [value1] THEN[result1]… ELSE[default] END 如果 value 是真, 返回 result1, 否则返回 defaultCASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END 如果 expr 等于 value1, 返回 result1, 否则返回 default

下面的例子中模拟对职员进行分类, 首先创建一个职员薪水表:

create table salary(userid int, salary decimal(9,2));

插入一些测试数据

insert into salary values (1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);

数据如下

mysql  select * from salary;
+--------+---------+
| userid | salary |
+--------+---------+
| 1 | 1000.00 |
| 2 | 2000.00 |
| 3 | 3000.00 |
| 4 | 4000.00 |
| 5 | 5000.00 |
| 1 | NULL |
+--------+---------+
6 rows in set (0.00 sec)

接下来, 通过这个表来介绍各个函数的应用.

IF(expr1,expr2,expr3) 函数: 这里认为月薪在 2000 元以上的职员属于高薪, 用 high 而 2000 以下的职员属于低薪, 用 low 来表示.

mysql  select if(salary 2000,  high ,  low) from salary; 
+--------------------------------+
| if(salary 2000,  high ,  low) |
+--------------------------------+
| low |
| low |
| high |
| high |
| high |
| low |
+--------------------------------+
6 rows in set (0.00 sec)

IFNULL(expr1,expr2) 函数: 这个函数一般用来替换 NULL 值, 我们知道 NULL 值是不能参参与数值运算的, 下面这个语句就是把 NULL 值用 0 替换.

mysql  select ifnull(salary,0) from salary;
+------------------+
| ifnull(salary,0) |
+------------------+
| 1000.00 |
| 2000.00 |
| 3000.00 |
| 4000.00 |
| 5000.00 |
| 0.00 |
+------------------+
6 rows in set (0.00 sec)

CASE WHEN [value1] THEN[result1]… ELSE[default] END 函数: 这里可以用 case when..then 函数实现上面例子中高薪低薪的问题.

mysql  select CASE WHEN salary =2000 THEN  low  else  high  END from salary;
+---------------------------------------------------+
| CASE WHEN salary =2000 THEN  low  else  high  END |
+---------------------------------------------------+
| low |
| low |
| high |
| high |
| high |
| high |
+---------------------------------------------------+
6 rows in set (0.00 sec)

CASE [expr] WHEN [value1] THEN[result1]… ELSE[default] END 函数:这里还可以分为多种情况把职员的薪水分为多个档次,比如下面的例子分成高、中、低3种情况。同样可以分成更多种情况,这里不再举例了,有兴趣的朋友可以自己测试一下

mysql  select CASE salary WHEN 1000 THEN  low  when 2000 THEN  mid  ELSE  high  END from salary;
+-----------------------------------------------------------------------+
| CASE salary WHEN 1000 THEN  low  when 2000 THEN  mid  ELSE  high  END |
+-----------------------------------------------------------------------+
| low |
| mid |
| high |
| high |
| high |
| high |
+-----------------------------------------------------------------------+
6 rows in set (0.00 sec)

关于 MySQL 中有哪些流程函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2549字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)