Mysql case when then函数使用

一、概念

功能描述: 判断数据显示代表的含义(类似java if)
语法:

CASE [col_name] WHEN [value1] THEN [result1]ELSE [default] END

二、实战

创建和数据

CREATE TABLE `user`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `account` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '账号',
  `password` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
  `status` bit(1) NULL DEFAULT NULL COMMENT '状态:1正常,0禁用',
  `create_date` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `update_date` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间'
)

INSERT INTO `user` VALUES (1, 'lanys', '123', b'1', '2022-06-10 11:03:34', '2022-06-10 11:03:34');
INSERT INTO `user` VALUES (2, 'Tom', '123', b'1', '2022-06-10 11:03:35', '2022-06-10 11:03:35');
INSERT INTO `user` VALUES (3, 'David', '111', b'0', '2022-06-10 11:03:38', '2022-06-10 11:03:38');

案例一

需求: 将数据表中账号信息状态用中文展示(状态:1 -> 正常, 0-> 禁用)。
实现效果:
在这里插入图片描述
语句:

SELECT id,account,PASSWORD,
	( CASE STATUS WHEN 1 THEN '正常' WHEN 0 THEN '禁用' ELSE NULL END ) AS STATUS 
FROM `user`

案例二

需求: 将表数据根据创建时间(create_date)排序统计做了什么(类似时间线)。
实现效果:
在这里插入图片描述

语句:

SELECT create_date,
	CONCAT_WS(
	',',
	CONCAT( '创建账号account:', account ),
	CONCAT( '密码password:', PASSWORD ),
	CONCAT( '账号状态:', CASE STATUS WHEN 1 THEN '正常' WHEN 0 THEN '禁用' ELSE NULL END ) 
	) AS line_info 
FROM `user` ORDER BY create_date
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值