Oracle学习笔记008-2(表达式:CASE表达式)

CASE表达式

CASE WHEN 表达式是一个通用条件的表达式,可以在表达式有效的任何位置使用

用法如下:
SELECT 字段
	CASE
		WHEN condition THEN result
		[ WHEN condition THEN result ]
		...
		[ ELSE result ]
END

如果满足condition(condition是一个boolean表达式),则返回相应的result

案例一

SQL> CREATE TABLE PAGE(
	id varchar(4),
	age number,
	sex varchar(4)
	);

表已创建。

SQL> INSERT INTO PAGE VALUES('1',16,'W');

已创建 1 行。

SQL> INSERT INTO PAGE VALUES('2',19,'W');

已创建 1 行。

SQL> INSERT INTO PAGE VALUES('3',24,'M');

已创建 1 行。

SQL> INSERT INTO PAGE VALUES('4',89,'W');

已创建 1 行。

SQL> SELECT * FROM PAGE;

ID              AGE SEX
-------- ---------- --------
1                16 W
2                19 W
3                24 M
4                89 W

SQL> SELECT id,sex,  
		CASE 
			WHEN age<18 THEN (age||'未成年')
			WHEN age>60 THEN (age||'老年')
			ELSE (age || '中年')
		END AS sex
	FROM PAGE;
ID   					AGE 					  SEX
---------------------------------------------------------------
1						W							16未成年
2						W							19中年
3						M							24中年
4						W							89老年

SQL> SELECT id,age,  
		CASE 
			WHEN sex='W' THEN '女'
		    WHEN sex='M' THEN '男'
			ELSE '未知'
		END AS sex
	FROM PAGE;

ID  					AGE  			SEX
-----------------------------------------------------
1						16				女
2						19				女
3						24				男
4						89				女
 

案例二

--学生表
SQL> CREATE TABLE student(
    id VARCHAR(32),
    s_name VARCHAR2(32),
    c_name VARCHAR2(32) NOT NULL,
    semester NUMBER DEFAULT 1 CHECK(semester IN (1, 2)),
    grade NUMBER DEFAULT 0,
    );

INSERT INTO student VALUES ('0001','ToM1','高等代数','1',59);
INSERT INTO student VALUES ('0002','ToM2','数学分析','2',85);
INSERT INTO student VALUES ('0003','ToM3','人文历史','2',0);
INSERT INTO student VALUES ('0004','ToM4','大学英语','1',79);
INSERT INTO student VALUES ('0005','ToM5','数学分析','2',65);
INSERT INTO student VALUES ('0006','ToM6','人文历史','1',66);
INSERT INTO student VALUES ('0007','ToM7','大学英语','1',19);
INSERT INTO student VALUES ('0008','ToM8','数学分析','1',100);

SQL> SELECT * FROM STUDENT;

ID 			S_NAME 		C_NAME 		SEMESTER 		GRADE
-----------------------------------------------------------------
0001		ToM1		高等代数		1				59
0002		ToM2		数学分析		2				85
0003		ToM3		人文历史		2				0
0004		ToM4		大学英语		1				79
0005		ToM5		数学分析		2				65
0006		ToM6		人文历史		1				66
0007		ToM7		大学英语		1				18
0008		ToM8		数学分析		1				100


SQL> SELECT id,s_name,c_name,semester,  
		CASE 
			WHEN grade<60 THEN '不及格'
		    WHEN (grade>60 AND grade <= 75)  THEN '及格'
            WHEN (grade>75 AND grade <= 90)  THEN '良好'
            WHEN grade>90 THEN '优秀'
			ELSE '未知'
		END AS grade
	FROM student;

ID 			S_NAME 		C_NAME 		SEMESTER 		GRADE
-----------------------------------------------------------------
0001		ToM1		高等代数		1				不及格
0002		ToM2		数学分析		2				良好
0003		ToM3		人文历史		2				不及格
0004		ToM4		大学英语		1				良好
0005		ToM5		数学分析		2				及格
0006		ToM6		人文历史		1				及格
0007		ToM7		大学英语		1				不及格
0008		ToM8		数学分析		1				优秀


边学习边记录,若有不足之处欢迎留言指点…

发布了63 篇原创文章 · 获赞 1 · 访问量 2018

猜你喜欢

转载自blog.csdn.net/qq_45061361/article/details/104998645