SQL IF语句的使用
备忘笔记
侵删
转载https://www.cnblogs.com/xuhaojun/p/9141396.html
SQL的IF语句
MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:
IF表达式
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
SELECT IF(sva=1,"男","女") AS s FROM table_name
WHERE sva != '';
作为表达式的if也可以用CASE WHEN来实现:
SELECT CASE sva
WHEN 1 THEN '男' ELSE '女'
END AS s
FROM table_name
WHERE sva != '';
在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。
例如:
SELECT CASE 1
WHEN 1 THEN 'one'
WHEN 2 THEN 'two' ELSE 'more'
END AS test
将输出one
IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
复制代码
SELECT IFNULL(1,0);
-> 1
SELECT IFNULL(NULL,10);
-> 10
SELECT IFNULL(1/0,10);
-> 10
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等也是相同的。
SQL IF语句的使用相关推荐
- SQL查询语句 select 详解
查询select: 1.单表查询 2.多表查询 3.嵌套查询分类 1)单表查询 2)多表查询 A.连接查询 B.子查询 ①一般子查询 ②相关子查询*************************** ...
- MySQL番外篇:一条SQL查询语句是如何执行的?
在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...
- SQL查询语句总是先执行SELECT?你们都错了。。。
来源 | infoq.cn/article/Oke8hgilga3PTZ3gWvbg 很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否 ...
- R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录
- 当我们输入一条SQL查询语句时,发生了什么?
我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题.同样,对于 MySQL 的学习也是这样.平时我们使用数据库,看到的通常都是一个整体.比如,你有个最简单 ...
- SQL查询语句大全集锦(一)
一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的 表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名 ...
- SQL Select语句完整的执行顺序:
SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...
- 如何写优雅的SQL原生语句?
前言: 上一篇讲Mysql基本架构时,以"sql查询语句在MySql架构中具体是怎么执行的" 进行了全面的讲解.知道了sql查询语句在MySql架构中的具体执行流程,但是为了能够更 ...
- SQL 查询语句总是先执行 SELECT?你们都错了
很多 SQL 查询都是以 SELECT 开始的.不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函数 ...
- Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇《初级→中级→高级》(持续更新,建议收藏)
Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇<初级→中级→高级>(持续更新,建议收藏) 目录 SQLSever数据库管理学习并深入理 ...
最新文章
- 拜托!不要用“ ! = null 做判空了
- R语言:expand.grid() 函数解析
- Web服务技术协议:REST与SOAP
- vuex的计算属性_Vuex详细介绍
- 价值100大洋的简体中文汉化补丁下载
- vue solt 属性浅析
- ceentos5.5 配置samba服务用户组
- 实习成长之路:下层应用调不到上层方法怎么办?GoogleGuava事件上报来打配合
- 大数据项目之dmp用户画像
- 1-关于单片机通信数据传输(中断发送,大小端,IEEE754浮点型格式,共用体,空闲中断,环形队列)...
- vba 数组填充单元格
- 网络七层及四层协议通俗详解
- rest-assured一些使用心得
- Qt系列文章之 QAbstractItemModel(中)
- 计算机格式化为ntfs,如何将u盘重新格式化为NTFS格式
- 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
- 设置柱状图每根柱子的颜色
- 矢网校准到底在较什么呢?
- python lambda 判断_Python lambda
- MAGSAC:Marginalizing Sample Consensus
热门文章
- android_x86安装arm转译
- Es6模板字符串条件判断
- android自定义抽屉布局,自定义Drawer,抽屉布局
- 【数字设计】恒玄科技_笔试面试题目分享
- 学计算机要选什么科目,实行新高考后 想学计算机专业怎么选科
- 高中计算机矩阵算法ppt,高中信息技术教科版必修1 数据与计算4.2 数值计算一等奖课件ppt...
- 以下哪些不是Linux操作系统特点,[多选] Linux操作系统具有以下()特点。
- 巴比特 | 元宇宙每日必读:时薪100万,「虚拟主播」的吸金能力被证实,其背后的公司IPO申请获批...
- JS - 计算直角三角形的边长及角度
- 2015—2016年QS世界大学排名200强-[转]