mysql中的条件语句case when/if函数
主要知识点为case函数,if函数,ifnull函数,elt函数几部分,主要用于mysql语句中的逻辑判断
待操作的表如下:
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
+----+-----------+-----+-------+--------+
| id | name | sex | level | weight |
+----+-----------+-----+-------+--------+
| 1 | xiaohong | 1 | 1 | 50 |
| 2 | xiaoming | 0 | 0 | 90 |
| 3 | xiaohuang | 1 | 2 | 80 |
| 4 | xiaoming | 0 | 3 | NULL |
+----+-----------+-----+-------+--------+
sex:0-woman,1-man,其中-unknown;level是客户的级别:1-normal,2-vip,3-vvip
1.case函数
语法1:
CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
……
ELSE defaultreturnvalue
END
举栗:
- select t.name,(case t.sex when 0 then 'woman' when 1 then 'man' else 'unknown' end) sex from test t;
CASE
WHEN condition1 THEN returnvalue1
WHEN condition 2 THEN returnvalue2
WHEN condition 3 THEN returnvalue3
……
ELSE defaultreturnvalue
END
- select t.name,(case when t.sex=0 then 'woman' when t.sex=1 then 'man' else 'unknown' end) sex from test t;
输出为:
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
+-----------+-------+
| name | sex |
+-----------+-------+
| xiaohong | man |
| xiaoming | woman |
| xiaohuang | man |
| xiaoming | woman |
+-----------+-------+
2.if函数
IF(expr1,expr2,expr3),如果 expr1 为真(expr1 <> 0 以及 expr1 <> NULL),那么 IF() 返回 expr2,否则返回expr3。
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
select name,if(weight>85,'fat','normal') from test;
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
+-----------+------------------------------+
| name | if(weight>85,'fat','normal') |
+-----------+------------------------------+
| xiaohong | normal |
| xiaoming | fat |
| xiaohuang | normal |
| xiaoming | normal |
+-----------+------------------------------+
当weight为NULL时,NULL>85的返回值为NULL,所以返回expr3 normal
3.IFNULL()函数
ifnull(value1,value2) 用来替换 NULL 值,若value1为NULL,则替换NULL为value2
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
select name,ifnull(weight,0) from test;
+-----------+------------------+
| name | ifnull(weight,0) |
+-----------+------------------+
| xiaohong | 50 |
| xiaoming | 90 |
| xiaohuang | 80 |
| xiaoming | 0 |
+-----------+------------------+
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
select name,ifnull(weight,0)+100 from test;
+-----------+----------------------+
| name | ifnull(weight,0)+100 |
+-----------+----------------------+
| xiaohong | 150 |
| xiaoming | 190 |
| xiaohuang | 180 |
| xiaoming | 100 |
+-----------+----------------------+
4.ELT函数
ELT(N,str1,str2,str3,...)
如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
select name,elt(level,'normal','vip','vvip') from test;
p.p1 { margin: 0; font: 16px Menlo; color: rgba(0, 0, 0, 1) }
span.s1 { font-variant-ligatures: no-common-ligatures }
+-----------+----------------------------------+
| name | elt(level,'normal','vip','vvip') |
+-----------+----------------------------------+
| xiaohong | normal |
| xiaoming | NULL |
| xiaohuang | vip |
| xiaoming | vvip |
+-----------+----------------------------------+
其他:
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,在该文中只讲述了if表达式。
参考:https://blog.csdn.net/rocling/article/details/82147981
mysql中的条件语句case when/if函数的更多相关文章
- Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表. IF 函数 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> ...
- MySQL中的条件语句
判断学生表中成绩是否小于60,将小于60的学生成绩列为不及格 学生表(student) 字段:姓名(name),学号(主键)(num),性别(sex),成绩(score) select *,if(sc ...
- sql 语句中使用条件判断case then else end
sql 语句中使用条件判断case then else end范例: SELECT les.[nLessonNo] FROM BS_Lesson AS les WHERE les.[sClassCod ...
- js中的条件语句
//js中的条件语句 ; //example1 单分支语句 ){ console.log("你已经不年轻了!"); }else{ console.log("你依然很有活力 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- 重新认识MySQL中的COUNT语句
在数据库的增删改查操作中,使用最频繁的就是查询操作. 而在所有查询操作中,统计数量操作更是经常被用到. 关于数据库中行数统计,无论是MySQL还是Oracle亦或者是SqlServer,都有一个函数可 ...
- mysql中常用的语句整理
mysql中常用的语句: 1:创建带自增长的主键的表 DROP TABLE IF EXISTS user_login ; CREATE TABLE user_login ( user_id INT ...
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...
- mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法
mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日 ...
随机推荐
- C语言变量和函数命名规范
C 语言变量和函数命名规范: 关于C语言变量和函数命名规范 据考察,没有一种命名规则可以让所有的程序员赞同,程序设计教科书一般都不指定命名规则.命名规则对软件产品而言并不是"成败悠关&quo ...
- 10.9 ping:测试主机之间网络的连通性
ping命令 可用于测试主机之间网络的连通性.执行ping命令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而可得知该主机运作正常. ping命令 ...
- SpringBoot打jar包-下载文件时报错-class path resource xxxxxx cannot be resolved to URL because it does not exist
一.问题由来 新项目的开发中,打包方式由war包改为了jar包的方式,这样在部署的时候更加的方便.测试环境使用pm2这个工具来管理项目的运行,停止,重启等等非常方便. 可是当测试人员在测试项目中的文件 ...
- Java中单列集合List排序的真实应用场景
一.需求描述 最近产品应客户要求提出了一个新的需求,有一个列表查询需要按照其中的多列进行排序. 二.需求分析 由于数据总量不多,可以全部查询出来,因此我就考虑使用集合工具类Collections.so ...
- 日常Bug排查-抛异常不回滚
日常Bug排查-抛异常不回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 最近有人反映java应用操作数据库的时候,抛异 ...
- MindArmour差分隐私
MindArmour差分隐私 总体设计 MindArmour的Differential-Privacy模块,实现了差分隐私训练的能力.模型的训练主要由构建训练数据集.计算损失.计算梯度以及更新模型参数 ...
- 多核片上系统(SoC)架构的嵌入式DSP软件设计
多核片上系统(SoC)架构的嵌入式DSP软件设计 Multicore a System-on-a-Chip (SoC) Architecture SoCs的软件开发涉及到基于最强大的计算模型在各种处理 ...
- 特斯拉Tesla Model 3整体架构解析(下)
特斯拉Tesla Model 3整体架构解析(中) Tesla Computer Unit 特斯拉已经开发了一个由自动驾驶仪和信息计算机组成的定制"液冷双计算平台"."他 ...
- 如果在num1的任何位置有一个数字的连续三倍,并且在num2中有一个数字的连续两倍,则返回1。 如果不是这样,则返回0
''' 它接受数字num1和num2,如果在num1的任何位置有一个数字的连续三倍,并且在num2中有一个数字的连续两倍,则返回1. 如果不是这样,则返回0 例子 triple_double(4519 ...
- tar与NTP时间同步
tar备份与恢复 归档和压缩 : 1.方便对零散文件管理 2.减少空间的占用 常见的压缩格式及命令工具: gzip ----> .gz bzip2 ---->.bz2 xz ---- ...