case if left right 简单使用

case when

准备数据

CREATE TABLE COURSE
(
  CNO   VARCHAR(5)  NOT NULL,
  CNAME VARCHAR(10) NOT NULL,
  TNO   VARCHAR(10) NOT NULL
);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (103, '3-245', 86);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (105, '3-245', 75);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (109, '3-245', 68);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (103, '3-105', 92);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (105, '3-105', 88);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (109, '3-105', 76);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (101, '3-105', 64);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (107, '3-105', 91);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (101, '6-166', 85);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (107, '6-106', 79);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (108, '3-105', 78);
INSERT INTO SCORE (SNO, CNO, DEGREE) VALUES (108, '6-166', 81);

score表结果

sno cno degree

103 3-245 86.0
105 3-245 75.0
109 3-245 68.0
103 3-105 92.0
105 3-105 88.0
109 3-105 76.0
101 3-105 64.0
107 3-105 91.0
101 6-166 85.0
107 6-106 79.0
108 3-105 78.0
108 6-166 81.0

case when 语句使用

查询等级0-60 E ,……,90-10 A

求取值范围
select case  when sc.degree   between 90 and 100 THEN 'A'
 when sc.degree between 80 and 90 THEN 'B'
 when sc.degree between 70 and 80 THEN 'C'
 when sc.degree between 60 and 70 THEN 'D'
 when sc.degree between 0 and 60 THEN 'E'
else 'F'
end as grade,sc.*
from score sc 
求单个值的
select sc.* , case degree when 75 then 'j'
when 86 then 'g'
else 'h'
end as bank 
from score sc;

if 语句

类似于java的三目运算

简单if使用

SELECT IF(2>3,1,3) as '取值'   -- 结果为3
SELECT IF(第一部分,第二部分,第三部分)
SELECT IF(2>1,1,3) as '取值'   -- 结果为1

我们把这个分为三部分;第一部分的条件满足,则取值第二部分,反之则取第三部分;

if语句联合子查询


left语句

截取字段的部分信息

完整的数据

SELECT * FROM book 
 查询结果
1	三体	7	1	刘慈欣
2	Java概述	1	2	刘德泽
3	Java核心技术	1	3	王晨同
4	JavaSE	1	4	万浩波
5	JavaSSM	1	5	许鸿博
6	Ajax	1	6	徐鸿宝
7	飞鸟集	7	7	泰戈尔
8	简爱	2	8	夏洛蒂·勃朗特
9	国家政治经济学	3	8	科恩
10	琅琊榜	4	9	海晏
11	我本浪人	7	12	马天宇

使用语句查询后的结果

SELECT * FROM book  WHERE LEFT(bname,1) not in ('j')
-- 查询的是书籍名第一个字不是j的结果
1	三体	7	1	刘慈欣
6	Ajax	1	6	徐鸿宝
7	飞鸟集	7	7	泰戈尔
8	简爱	2	8	夏洛蒂·勃朗特
9	国家政治经济学	3	8	科恩
10	琅琊榜	4	9	海晏
11	我本浪人	7	12	马天宇
12	MySQL	12	3	于敏
13	Html入门	12	4	周迪

LEFT(表的字段名,取前几个字)

right语句

SELECT * FROM book WHERE  RIGHT(bname,1) !='l'
-- 查询的是书籍名最后字不是l的结果
1	三体	7	1	刘慈欣
2	Java概述	1	2	刘德泽
3	Java核心技术	1	3	王晨同
4	JavaSE	1	4	万浩波
5	JavaSSM	1	5	许鸿博
6	Ajax	1	6	徐鸿宝
7	飞鸟集	7	7	泰戈尔
8	简爱	2	8	夏洛蒂·勃朗特
9	国家政治经济学	3	8	科恩
10	琅琊榜	4	9	海晏
11	我本浪人	7	12	马天宇
13	Html入门	12	4	周迪

-- 原来数据中的编号12的MySQL已经没有了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值