当前位置: 首页 > news >正文

MySQL的条件判断函数

1、CASE WHEN 条件判断函数

CASE WHEN 语句能在 SQL 语句中织入判断逻辑, 类似于 Java 中的 if else 语句。它分为简单函数和条件表达式

1.1. 简单函数

下面通过一个简单的示例来看一下具体用法,表 user_biz_info

需求说明:在 user_biz_info表中,sex = 1 表示男性,sex = 0 表示女性,查询时转换成汉字显示

SELECT gender, username,( CASE gender WHEN 1 THEN '男' ELSE '女' END ) AS sex 
FROM
	user_biz_info

1.2.条件表达式

下面通过一个简单的示例来看一下具体用法,表 finance_order_detail

SELECT
	sub_order_sn,
	settle_price,
	settle_type,
	( CASE WHEN settle_type = 2 THEN '底价供货' WHEN settle_type = 1 THEN '扣点' WHEN settle_type = 3 THEN '自营买断' END ) AS test_type 
FROM
	finance_order_detail

或者

SELECT
	sub_order_sn,
	settle_price,
	settle_type,
	( CASE WHEN settle_type = 2 THEN '底价供货' WHEN settle_type = 1 THEN '扣点' else '自营买断' END ) AS test_type 
FROM
	finance_order_detail

1.3. 结合使用

CASE WHEN 和聚合函数综合使用,能实现更加复杂的统计功能

需求:统计不同指标类型对应的数量,以及订单数为1的数量

SELECT
	SUM(CASE WHEN target_id = 'O3' THEN 1 ELSE 0 END ) AS 数量3, 
	SUM(CASE WHEN target_id = 'O1' THEN 1 ELSE 0 END ) AS 数量1,
	SUM(case WHEN target_id='O2' and order_num=1 THEN 1 ELSE 0 END) as 数量2
	from dwd_month_order_num

1.4.IF() 条件判断函数

-- expr 是一个条件表达式,如果结果为 true,则返回 result_true,否则返回 result_false
IF(expr, result_true, result_false)

实例:

SELECT
    `name`,
    IF( sex = 1, '男', '女' ) AS sex 
FROM
    score

if函数也可以和聚合函数一起使用

select num ,
    sum(if (sex=1,1,null)) as 女生人数,
    sum(if (sex=0,1,null)) as 男生人数
from score
    

1.5.ifnull条件判断函数

IFNULL(expr1, expr2),如果 expr1 的值为 null,则返回 expr2 的值,如果 expr1 的值不为 null,则返回 expr1 的值

SELECT IFNULL(NULL,'B');    -- 输出结果:B
SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO

使用语法如下

select IFNULL(gmt_last_active,0) gmt_last_active from user_biz_info where nickname= '用户1'

但使用 IFNULL 语句,如果 where 条件中的 name 值是不存在的,那么仍将返回 NULL

1.6.ifnull函数结合聚合函数使用

-- 返回结果:0
SELECT IFNULL(SUM(price), 0) FROM goods WHERE status = 3

其他 AVG、COUNT 等用同样方式处理,而且无论 where 条件存在不存在,结果都是会返回 0 的

1.7.NULLIF() 条件判断函数

NULLIF(expr1, expr2),如果 expr1 = expr2 成立,那么返回值为 null,否则返回值为 expr1 的值;

SELECT ISNULL(NULL);        -- 输出结果:1
SELECT ISNULL('HELLO');     -- 输出结果:0

1.8.ISNULL() 条件判断函数

ISNULL(expr),如果 expr 的值为 null,则返回 1,如果 expr1 的值不为 null,则返回 0

SELECT ISNULL(NULL);        -- 输出结果:1
SELECT ISNULL('HELLO');     -- 输出结果:0

相关文章:

  • L1-058 6翻了 (15 分)-PAT 团体程序设计天梯赛 GPLT
  • Tomcat I/O 组件——NioEndpoint 再深入
  • 【牛客网刷题】VL8-VL10 generate for语句、比较数大小、function的使用
  • 改进YOLOv7系列:首发最新结合多种X-Transformer结构新增小目标检测层,让YOLO目标检测任务中的小目标无处遁形
  • 外包干了三年,真废了。。。
  • NC57 反转数字
  • Day14-尚品汇-个人中心二级路由搭建
  • 【第一阶段:java基础】第2章:java变量
  • 【Spring】一文带你吃透基于注解的DI技术
  • 跨域(cors和jsonp)
  • 手撕前端面试题【javascript~ 总成绩排名、子字符串频次统计、继承、判断斐波那契数组等】
  • Linux运维面试题总结—Linux基础、计算机网络基础
  • 【小程序websocket前后端交互】uniapp写微信小程序聊天功能功能,websocket交互功能,心跳重连【详细注释,复制即用】
  • 四线法与电桥
  • Linux文件属性与权限
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 新闻1+1丨多地政府食堂开放“舌尖上的服务”,反映出怎样的理念转变?
  • 贵州黔西市游船倾覆事故发生后,多家保险公司紧急响应
  • 新华社:让历史照鉴未来
  • 抗战回望16︱《青年生活》《革命青年》:抗战与青年
  • 罗志田:文学革命的社会功能与社会反响