mysql中的if、ifnull、case、case when

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: mysql中的if、ifnull、case、case when

一、四者的使用



1.if(flag,value1,value2)


若是flag(可以是一个表达式)结果为真,则返回第二个参数,为假则返回第三个参数,如下:

select if(true,"真","假") as '列1',if(false,"真","假") as '列2'
from dual;



2.ifnull(value1,value2)


若是value1为null则返回value2,否则返回value1,如下:

select ifnull(null,"非null") as '列1',ifnull("非null",null) as '列2'
from dual;


3.case flag when


case when有两种用法,当前这种和java里的switch可以说一模一样了,举例如下:

select
(case project.status 
when 0 then '未交付'
when 1 then '滚动交付'
when 2 then '已交付'
END
) as 状态
from project;


4.case when flag


这种写法将判断写在when后,这种写法麻烦一些,但是相对于上面的写法则更灵活一些,可以不受字段的约束,比如:

select
(case 
when p.STATUS = '0' then '未交付'
when p.STATUS = '1' then '滚动交付'
when p.STATUS = '2' then '已交付'
end
) as 状态
from tb_mdm_project p;


二、典型场景



场景:version 字段可能为null,需要取值对在程序里进行运算,那么我们在获取时是要判断该值是否可能为null的情况的。


解决一:

select
ifnull(p.version,0)
from tb_mdm_project p;


解决二:

select
if(p.version is null,0,p.version)
from tb_mdm_project p ;


解决三:

select
(case 
when p.version is null then 0
else p.version
end ) as version 
from tb_mdm_project p ;


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL
922.【mysql】if 函数
922.【mysql】if 函数
20 3
|
4月前
|
存储 SQL 关系型数据库
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
MySQL存储过程 if、case、while、loop、游标、变量、条件处理程序
49 0
|
9月前
|
关系型数据库 MySQL
MySQL深入浅出: order by if()与order by in()之条件排序
MySQL深入浅出: order by if()与order by in()之条件排序
133 0
|
9月前
|
关系型数据库 MySQL
灵活排序策略:发现 MySQL 中的 ORDER BY IF 和 ORDER BY IN
灵活排序策略:发现 MySQL 中的 ORDER BY IF 和 ORDER BY IN
67 0
|
10月前
|
关系型数据库 MySQL
MySQL实战基础知识入门(4):MySQL高级函数CASE WHEN END
MySQL实战基础知识入门(4):MySQL高级函数CASE WHEN END
72 0
|
5月前
|
SQL 关系型数据库 MySQL
MySQL知识汇总:MySQL函数CASE WHEN用法详解
MySQL知识汇总:MySQL函数CASE WHEN用法详解
|
8月前
|
SQL Oracle 关系型数据库
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
|
8月前
|
关系型数据库 MySQL
Mysql 使用case排序
Mysql自定义排序使用case进行排序
|
8月前
|
关系型数据库 MySQL
Mysql中 Case的使用方法
Mysql中 Case的使用方法
|
8月前
|
Oracle 关系型数据库 MySQL
Mysql 中函数ifnull()实现oracle nvl()函数
Mysql 中函数ifnull()实现oracle nvl()函数

推荐镜像

更多