SQL中case的几种写法

有些时候在实际开发中需要对查询的出来的某个字段进行转换,书上也有一些简单的列子。

假设我们有一张学生成绩表。(使用utf8mb4可以防止一些用户的特殊文字)

CREATE TABLE `t_stu_score`  (
  `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学生姓名',
  `subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课本名称',
  `score` decimal(3, 0) NULL DEFAULT NULL COMMENT '分数',
  `gender` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

里面有一些数据

INSERT INTO `t_stu_score` VALUES (1, '汤x洲', '语文', 90, '1');
INSERT INTO `t_stu_score` VALUES (2, '肖x宝', '语文', 75, '0');
INSERT INTO `t_stu_score` VALUES (3, '王五', '语文', 86, '1');
INSERT INTO `t_stu_score` VALUES (4, '李四', '语文', 99, '0');
INSERT INTO `t_stu_score` VALUES (5, '刘同学', '语文', 59, '0');

题目一:对于gender字段为1的显示男,0显示女。case的简单函数

		
select case tss.gender when '1' then '男'
when '0' then '女'
-- else '其他'
end,
		tss.username
FROM
		t_stu_score AS tss 

题目二: 根据规定对语文成绩 大于等于90分的同学显示为优,大于等于80小于90显示为良,60-79显示中,小于60显示为要继续努力。这种叫做case的搜索函数,和简单的case有很大的区别


SELECT
	CASE
		WHEN
			tss.score >= 90 THEN '优' 
		WHEN
			tss.score >= 80 and tss.score < 90 THEN '良' 
		WHEN
			tss.score >= 60 and tss.score < 79 THEN '中'  
		WHEN
			tss.score < 60 THEN '要继续努力' 
		-- else '其他'	
			END,
		tss.username 
	FROM
		t_stu_score AS tss 
WHERE
	tss.SUBJECT = '语文' 

ps:其他可能

--case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。
--比如说,下面这段sql,你永远无法得到“第二类”这个结果

            case when col_1 in ( 'a', 'b') then'第一类'

            when col_1 in ('a')       then '第二类'

            else '其他' end

pgsql中limit无法直接简写 limit 10, 5
pgsql写法是 limit [分页条数] offset [从多少开始比如写0 就从 第1条开始]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值