MySQL流程函数常见用法实例分析
本文实例讲述了MySQL流程函数常见用法。分享给大家供大家参考,具体如下:
流程函数是MySQL相对常用的一类函数,用户可以使用这类函数在一个SQL语句中实现条件选择,这样能够提高效率.
下面列出了MySQL跟条件有关的流程函数
下面的例子中模拟对职员进行分类,首先创建一个职员薪水表:
createtablesalary(useridint,salarydecimal(9,2));
插入一些测试数据
insertintosalaryvalues(1,1000),(2,2000),(3,3000),(4,4000),(5,5000),(1,null);
数据如下
mysql>select*fromsalary; +--------+---------+ |userid|salary| +--------+---------+ |1|1000.00| |2|2000.00| |3|3000.00| |4|4000.00| |5|5000.00| |1|NULL| +--------+---------+ 6rowsinset(0.00sec)
接下来,通过这个表来介绍各个函数的应用.
IF(expr1,expr2,expr3)函数:这里认为月薪在2000元以上的职员属于高薪,用"high'表示;而2000以下的职员属于低薪,用'low'来表示.
mysql>selectif(salary>2000,'high','low')fromsalary; +--------------------------------+ |if(salary>2000,'high','low')| +--------------------------------+ |low| |low| |high| |high| |high| |low| +--------------------------------+ 6rowsinset(0.00sec)
IFNULL(expr1,expr2)函数:这个函数一般用来替换NULL值,我们知道NULL值是不能参参与数值运算的,下面这个语句就是把NULL值用0替换.
mysql>selectifnull(salary,0)fromsalary; +------------------+ |ifnull(salary,0)| +------------------+ |1000.00| |2000.00| |3000.00| |4000.00| |5000.00| |0.00| +------------------+ 6rowsinset(0.00sec)
CASEWHEN[value1]THEN[result1]…ELSE[default]END函数:这里可以用casewhen..then函数实现上面例子中高薪低薪的问题.
mysql>selectCASEWHENsalary<=2000THEN'low'else'high'ENDfromsalary; +---------------------------------------------------+ |CASEWHENsalary<=2000THEN'low'else'high'END| +---------------------------------------------------+ |low| |low| |high| |high| |high| |high| +---------------------------------------------------+ 6rowsinset(0.00sec)
CASE[expr]WHEN[value1]THEN[result1]…ELSE[default]END函数:这里还可以分为多种情况把职员的薪水分为多个档次,比如下面的例子分成高、中、低3种情况。同样可以分成更多种情况,这里不再举例了,有兴趣的朋友可以自己测试一下
mysql>selectCASEsalaryWHEN1000THEN'low'when2000THEN'mid'ELSE'high'ENDfromsalary; +-----------------------------------------------------------------------+ |CASEsalaryWHEN1000THEN'low'when2000THEN'mid'ELSE'high'END| +-----------------------------------------------------------------------+ |low| |mid| |high| |high| |high| |high| +-----------------------------------------------------------------------+ 6rowsinset(0.00sec)
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》
希望本文所述对大家MySQL数据库计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。