Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

IF表达式

IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

select *,if(sva=1,"男","女") as ssva from taname where sva != ""

作为表达式的if也可以用CASE when来实现:

select CASE sva WHEN 1 THEN '男' ELSE '女' END as ssva from taname where sva != ''

在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。

例如:

SELECT CASE 1 WHEN 1 THEN 'one'WHEN 2 THEN 'two' ELSE 'more' END
as testCol

将输出one

IFNULL(expr1,expr2)

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

mysql> SELECT IFNULL(1,0);-> 1mysql> SELECT IFNULL(NULL,10);-> 10mysql> SELECT IFNULL(1/0,10);-> 10mysql> SELECT IFNULL(1/0,'yes');-> 'yes'
IFNULL(expr1,expr2)

的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。

IF ELSE 做为流程控制语句使用

if实现条件判断,满足不同条件执行不同的操作,这个我们只要学编程的都知道if的作用了,下面我们来看看mysql 存储过程中的if是如何使用的吧。

IF search_condition THEN statement_list
[ELSEIF search_condition THEN]  statement_list ...
[ELSE statement_list]
END IF 

与PHP中的IF语句类似,当IF中条件search_condition成立时,执行THEN后的statement_list语句,否则判断ELSEIF中的条件,成立则执行其后的statement_list语句,否则继续判断其他分支。当所有分支的条件均不成立时,执行ELSE分支。search_condition是一个条件表达式,可以由“=、<、<=、>、>=、!=”等条件运算符组成,并且可以使用AND、OR、NOT对多个表达式进行组合。

例如,建立一个存储过程,该存储过程通过学生学号(student_no)和课程编号(course_no)查询其成绩(grade),返回成绩和成绩的等级,成绩大于90分的为A级,小于90分大于等于80分的为B级,小于80分大于等于70分的为C级,依次到E级。那么,创建存储过程的代码如下:

create procedure dbname.proc_getGrade
(stu_no varchar(20),cour_no varchar(10))
BEGIN
declare stu_grade float;
select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no;
if stu_grade>=90 then select stu_grade,'A';
elseif stu_grade<90 and stu_grade>=80 then select stu_grade,'B';
elseif stu_grade<80 and stu_grade>=70 then select stu_grade,'C';
elseif stu_grade70 and stu_grade>=60 then select stu_grade,'D';
else select stu_grade,'E';
end if;
END 

注意:IF作为一条语句,在END IF后需要加上分号“;”以表示语句结束,其他语句如CASE、LOOP等也是相同的。

MySQL的if,case语句使用总结相关推荐

  1. MySQL 入门:Case 语句很好用

    引言 MySQL CASE 是一个 MySQL 语句查询关键字,它定义了处理循环概念以执行条件集并使用 IF ELSE 返回匹配案例的方式. MySQL 中的 CASE 是一种控制语句,它验证条件案例 ...

  2. mysql触发器中case语句_一个很好的触发器例子(case when)

    CREATE OR REPLACE TRIGGER TR_CGD1 BEFORE UPDATE OR INSERT OR DELETE ON BB_MJ_CGD1_TB FOR EACH ROW DE ...

  3. mysql case设固定值_MySQL CASE语句将自定义值放置为NULL

    让我们首先创建一个表-mysql> create table DemoTable ( FirstName varchar(20) ); 使用插入命令在表中插入一些记录-mysql> ins ...

  4. MySQL使用IF语句以及用case语句对条件或结果进行判断

    MySQL使用IF语句以及用case语句对条件或结果进行判断 一.前期准备 二.IF语句 1.场景一 2.场景二 三.CASE语句 一.前期准备 CREATE TABLE `t1` (`id` int ...

  5. mysql 中 case语句吗_Mysql中的Case语句

    1.Case基本初识 case语句是mysql中的一个条件语句,可以在字段中使用case语句进行复杂的筛选以及构造新的字段.下面通过两个leetcode例子来详细解读case语句的功能: 1.1 Le ...

  6. MySQL CASE语句

    MySQL CASE语句 如何使用MySQL 中CASE语句在存储的程序中构造复杂的条件语句. 除了IF语句],MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高 ...

  7. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法

    ryxxlong的博客 Sql server 中的 CASE 语句文章, 链接 http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,主要用于自己以后 ...

  8. mysql之case_mysql存储过程之case语句

    存储程序的CASE语句实现一个复杂的条件构造.如果search_condition求值为真,相应的SQL被执行.如果没有搜索条件匹配,在ELSE子句里的语句被执行. 语法: CASE case_val ...

  9. mysql的 case用法_mysql数据库case语句的使用方法

    用case语句就可以很好的解决这个问题:  代码如下 复制代码 select a.master_id,sum(case when b.status=6 then 1 else 0 end) as to ...

  10. Mysql 中Sql控制流语句_DCL语句/控制流语句

    一.(1)DCL(数据控制语言)主要是数据库管理员用来管理其他用户权限时使用的语句:可以授予的权限包括以下: 列权限:和表中的一个具体列相关.表权限:和一个具体数据表中的所有数据相关.数据库权限:和一 ...

最新文章

  1. Docker系列 二. Docker 安装 Nginx
  2. 局域网语音通话demo
  3. 图解插入排序--直接插入排序
  4. 多线程Socket的InputStream的困扰一天才解决的问题
  5. Unity(四)IocContainer 封装类库
  6. 谈谈重载(overload)覆盖(override)与隐藏
  7. CentOS7.3编译安装php7.1
  8. 深度学习的最新研究进展(三)
  9. reduce端的连接实现
  10. ubuntu解决软件下载速度过慢
  11. DNS是什么意思?DNS怎么设置?
  12. 华为机试题 好友关系管理
  13. 【Python程序设计】实验4:字符串与正则表达式
  14. 大数据社会的十三大具体应用场景(二)
  15. Transact-SQL基础语言(数据检索)
  16. 自步对比学习(Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive Object Re-ID)
  17. C/S构架和B/S构架
  18. Web 应用程序防火墙 (WAF)
  19. 创建利于Google网站的步骤
  20. Linux红旗语言,如何改变红旗linux控制面板语言

热门文章

  1. php会话(session)生命周期概念介绍及设置更改和回收
  2. AutoCAD 2013
  3. 黄聪:buffer overflow detected问题解决及gcc-4.1安装
  4. python2基本数据类型
  5. 深入理解java虚拟机---读书笔记
  6. Bag of Tricks for Image Classification
  7. vue-自定义过滤器--时间
  8. 2057. [ZLXOI2015]殉国
  9. mac添加取消开机启动
  10. mysql数据库保存中文乱码解决参考方案