暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL中的流程函数

原创 巩飞 2020-02-25
703

MySQL中的流程函数也是很常用的一类函数,使用这类函数可以在SQL语句中实现条件选择。下表列出了MySQL 5.7支持的所有流程函数。

Name Description
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result …] [ELSE result] END Case operator
CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END Case operator
IF() If/else construct
IFNULL() Null if/else construct
NULLIF() Return NULL if expr1 = expr2

我们通过实例来研究下用法。

  • CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result …] [ELSE result] END,返回第一个value=compare_value的result
root@database-one 00:24: [gftest]> select * from emp; +--------+------+---------+------------+--------+ | ename | age | sal | hiredate | deptno | +--------+------+---------+------------+--------+ | 郭军 | 27 | 8400.00 | 2019-12-08 | 10 | | 刘杰 | 30 | 9100.00 | 2018-04-09 | 10 | | 王艳 | 24 | 6000.00 | 2020-01-05 | 20 | | 马丽 | 26 | 7200.00 | 2018-07-06 | 30 | | 肖伟 | 29 | 8700.00 | 2017-05-28 | 30 | +--------+------+---------+------------+--------+ 5 rows in set (0.00 sec) root@database-one 00:24: [gftest]> select ename,case sal when 6000 then 'low' when 9100 then 'high' else 'mid' end from emp; +--------+--------------------------------------------------------------------+ | ename | case sal when 6000 then 'low' when 9100 then 'high' else 'mid' end | +--------+--------------------------------------------------------------------+ | 郭军 | mid | | 刘杰 | high | | 王艳 | low | | 马丽 | mid | | 肖伟 | mid | +--------+--------------------------------------------------------------------+ 5 rows in set (0.00 sec)
  • CASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END,返回第一个condition为true的result
root@database-one 00:27: [gftest]> select ename,case when sal<=7000 then 'low' when sal>=9000 then 'high' else 'mid' end from emp; +--------+--------------------------------------------------------------------------+ | ename | case when sal<=7000 then 'low' when sal>=9000 then 'high' else 'mid' end | +--------+--------------------------------------------------------------------------+ | 郭军 | mid | | 刘杰 | high | | 王艳 | low | | 马丽 | mid | | 肖伟 | mid | +--------+--------------------------------------------------------------------------+ 5 rows in set (0.05 sec)
  • IF(expr1,expr2,expr3),如果expr1为TRUE (expr1 <> 0 and expr1 <> NULL),返回expr2,否则返回expr3
root@database-one 00:32: [gftest]> SELECT IF(1>2,2,3),IF(1<2,'yes','no'),IF(STRCMP('test','test1'),'no','yes'); +-------------+--------------------+---------------------------------------+ | IF(1>2,2,3) | IF(1<2,'yes','no') | IF(STRCMP('test','test1'),'no','yes') | +-------------+--------------------+---------------------------------------+ | 3 | yes | no | +-------------+--------------------+---------------------------------------+ 1 row in set (0.03 sec) root@database-one 00:33: [gftest]> select ename,if(sal>8000,'high','low') from emp; +--------+---------------------------+ | ename | if(sal>8000,'high','low') | +--------+---------------------------+ | 郭军 | high | | 刘杰 | high | | 王艳 | low | | 马丽 | low | | 肖伟 | high | +--------+---------------------------+ 5 rows in set (0.02 sec)
  • IFNULL(expr1,expr2),如果expr1不为NULL,返回expr1,否则expr2
root@database-one 00:35: [gftest]> SELECT IFNULL(1,0),IFNULL(NULL,10),IFNULL(1/0,10),IFNULL(1/0,'yes'); +-------------+-----------------+----------------+-------------------+ | IFNULL(1,0) | IFNULL(NULL,10) | IFNULL(1/0,10) | IFNULL(1/0,'yes') | +-------------+-----------------+----------------+-------------------+ | 1 | 10 | 10.0000 | yes | +-------------+-----------------+----------------+-------------------+ 1 row in set (0.08 sec)
  • NULLIF(expr1,expr2),如果expr1 = expr2,返回NULL,否则返回expr1
root@database-one 00:39: [gftest]> SELECT NULLIF(1,1),NULLIF(1,2); +-------------+-------------+ | NULLIF(1,1) | NULLIF(1,2) | +-------------+-------------+ | NULL | 1 | +-------------+-------------+ 1 row in set (0.04 sec)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论