mysql if语句后面执行两个语句_MySQL的if,case语句使用总结

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

IF表达式

IF(expr1,expr2,expr3)

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

select*,if(sva=1,"男","女")asssva fromtaname wheresva !=""

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

selectCASE sva WHEN 1THEN '男'ELSE '女'ENDasssva fromtaname wheresva !=''

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

例如:

SELECT CASE 1WHEN 1THEN 'one'WHEN 2THEN 'two'ELSE 'more'ENDastestCol

将输出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]ENDIF

与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))BEGINdeclare stu_grade float;selectgrade intostu_grade fromgrade wherestudent_no=stu_no andcourse_no=cour_no;ifstu_grade>=90thenselectstu_grade,'A';elseif stu_grade<90andstu_grade>=80thenselectstu_grade,'B';elseif stu_grade<80andstu_grade>=70thenselectstu_grade,'C';elseif stu_grade70 andstu_grade>=60thenselectstu_grade,'D';elseselectstu_grade,'E';endif;END

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac mysql 默认字符集_MacOS中Mysql设置默认字符集

一、查看字符集mysql> show variables like character%;-------------------------------------------------------------------------------------| Variable_name | Value |----------------------------…

原创 通过PEB获得进程路径 (附完整工程)

完整工程&#xff1a;http://files.cnblogs.com/files/Gotogoo/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86%E5%99%A8%28x86%26%26x64%29.zip PEB&#xff08;Process Environment Block&#xff0c;进程环境块&#xff09;存放进程信息&#xff0c;每个进程都有自己的PEB信息。位于…

土豚mysql_树莓派LNMP配置

修改软件源1.首先备份源列表&#xff1a;sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup2.而后打开sources.list文件修改&#xff1a;sudo vim /etc/apt/sources.list软件源可已在网上查查&#xff0c;有ubuntu官方的、阿里云的、清华的等需要注意首先查看自己的…

Windbg SOS and CLR版本不一致的解决方案

由于测试服务环境与Windbg运行环境的差异&#xff0c;这就可能出现Windbg在分析dump文件时.net sos.dll和mscordacwks.dll版本不一致问题&#xff0c;从而导致windbg调试器的扩展命令无法正常使用&#xff0c;具体的解决方法如下&#xff1a;1.首先定义Windgb symbols路径&…

mysql镜像远程连接_docker 创建mysql镜像,并成功进行远程连接

1.安装1.1 拉取镜像docker pull mysql拉取成功可以验证一下docker images1.2 创建并启动一个mysql容器docker run --name ly-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -d mysql–name&#xff1a;给新创建的容器命名&#xff0c;此处命名为ly-mysql-e&#xff1a;配置…

[DIV/CSS] 【译】60个有用CSS代码片段

2019独角兽企业重金招聘Python工程师标准>>> 1、垂直对齐 如果你用CSS&#xff0c;则你会有困惑&#xff1a;我该怎么垂直对齐容器中的元素&#xff1f;现在&#xff0c;利用CSS3的Transform&#xff0c;可以很优雅的解决这个困惑&#xff1a; .verticalcenter{posi…

java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

大家好&#xff0c;乐字节的小乐又和大家见面了。这次要给大家讲述的是Java常用类。主要有以下知识点&#xff1a; 字符串相关类&#xff08;String 、StringBuffer、StringBuilder&#xff09; 算法及数组工具类(Arrays) 日期类 基本数据类型包装类 Math类 File类 枚举类一、 …

IOS之Foundation之探究学习Swift实用基础整理一

2019独角兽企业重金招聘Python工程师标准>>> 1 import Foundation2 3 //加载网络数据&#xff0c;查找数据的字符串4 let dataurl "http://api.k780.com:88/?appweather.city&&appkey10003&signb59bc3ef6191eb9f747dd4e83c99f2a4&formatjson…

sql 时间 没有日期_SQL-补充:日期和时间戳互转

补充&#xff1a;日期和时间戳互转1. 日期转时间戳-- 转十位select UNIX_TIMESTAMP(2018-12-25 12:25:00);结果&#xff1a;1545711900-- 转十三位SELECT REPLACE(unix_timestamp(current_timestamp(3)),.,);结果&#xff1a;15457119000212. 时间戳转日期 FROM_UNIXTIME(unix_…

CentOS 安装 Tomcat

1、Tomcat官网获&#xff08;http://tomcat.apache.org/&#xff09;取tar.gz文件的下载地址2、下载&#xff1a;# wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz3、解压&#xff1a;# tar -zxvf apache-tomcat-8.0.24.tar.gz 4、复制…

mysql sqlite 性能优化_MySQL和Sqlite3性能测试

测试条件&#xff1a;i5-44603.2G&#xff0c;普通机械硬盘。MySql: 5.0.45-community-nt,32bit, innodb引擎,innodb_flush_log_at_trx_commit0Sqlite3: SynchronousOff,LockingMode ExclusiveTableScript:MySql:CREATE TABLE test (id int(10) unsigned NOT NULL auto_increm…

win7-64bit 下oracle11g plsql 的正确安装

本人在PC机上安装了Oracle 11g 版本号的数据库服务&#xff0c;通过PL/SQL连接数据库时总是无法连接&#xff0c;由于PLSQL没有64位版。通过32bit的PLSQL连接64位的Oracle时就会报错&#xff0c;第一种须要安装一个32位的oracle客户端工具instantclient进行转换&#xff0c;另外…

3.9 第二次作业

一、信息系统集成有哪些特点&#xff1f;信息系统集成要以满足客户需求为根本出发点。信息系统集成不只是设备选择和供应&#xff0c;更重要的&#xff0c;它是具有高技术含量的工程过程&#xff0c;要面向用户需求提供全面的解决方案&#xff0c;其核心是软件。系统集成的最终…

vue那个生命周期函数操作dom_vue生命周期实例小结

本文实例分析了vue生命周期。分享给大家供大家参考&#xff0c;具体如下&#xff1a;每个Vue实例都存在完整的生命周期&#xff0c;经历从创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程。如下图所示vue的完整生命周期可分为三个阶段&#xff1a;初…

python 字符串函数 center_Python字符串处理

Python字符串处理Python处理字符串是一个基本操作&#xff0c;需要熟记于心&#xff0c; 这篇python字符串处理文章总结了大多数常用的字符串处理函数、策略&#xff0c;供大家以及自己参考使用。Part I 常见处理函数1. String.find(sub, start0, endlen(string))检测sub是否包…

关于apache的虚拟主机配置

增加用户账号的验证touch /data/.htpasswd[rootuser10data]# htpasswd -c /data/.htpasswd user1 #新增第一个账号[rootuser10data]# htpasswd /data/.htpasswd user2 #新增第二个账号编辑/usr/local/apache2/conf/extra/httpd-vhosts.conf<VirtualHost *:80&g…

python字符串垂直输出加循环_将漂亮的soup嵌套循环垂直输出到datafram中

我如何将这个web抓取(数据)的输出放入pandas数据帧&#xff1f;下面的代码只显示一行数据&#xff0c;并且是垂直排列的。如何使数据帧看起来完全像打印(数据)-即水平&#xff1f;另外&#xff0c;我是个新手&#xff0c;这可不是Python。请建议如何使其成为函数(&#xff1f;)…

不求很多,够用就好

Hi&#xff0c;我是一名在校学生&#xff0c;目前大三&#xff0c;希望在前端方向上发展&#xff0c;最好以后是一个真全栈 曾经也会搜索一堆的工具&#xff0c;后面发现 只有正确的使用合理数量的工具&#xff0c;才能加快开发步伐 下面简单推荐几个实用工具&#xff0c;强大并…

Android控件第6类——杂项控件

1、Toast Toast用于显示提示信息。 Toast不会获得焦点&#xff0c;没法关闭&#xff0c;过段时间会自动消失。 使用方法&#xff1a;Toast.makeText获得Toast&#xff0c;并设置相关属性。调用Toast对象的show方法显示。 默认情况&#xff0c;Toast只弹出一段话&#xff0c;如果…

数据结构与算法面试题80道(32)

32. 有两个序列a,b&#xff0c;大小都为n,序列元素的值任意整数&#xff0c;无序; 要求:通过交换a,b中的元素&#xff0c;使[序列a元素的和]与[序列b元素的和]之间的差最小。 当前数组a和数组b的和之差为 A sum(a) - sum(b) a的第i个元素和b的第j个元素交换后&#xff0c;a和…