HowTo
2005-10-04
Oracle HowTo:如何使用Oracle case函数
通过实例简要介绍case函数的用法。
1.创建测试表:
2.查看相应数据
3.更新语句
4.更新后结果
1.创建测试表:
DROP SEQUENCE student_sequence; CREATE SEQUENCE student_sequence START WITH 10000 INCREMENT BY 1; DROP TABLE students; CREATE TABLE students ( id NUMBER(5) PRIMARY KEY, first_name VARCHAR2(20), last_name VARCHAR2(20), major VARCHAR2(30), current_credits NUMBER(3), grade varchar2(2)); INSERT INTO students (id, first_name, last_name, major, current_credits,grade) VALUES (student_sequence.NEXTVAL, 'Scott', 'Smith', 'Computer Science', 98,null); INSERT INTO students (id, first_name, last_name, major, current_credits,grade) VALUES (student_sequence.NEXTVAL, 'Margaret', 'Mason', 'History', 88,null); INSERT INTO students (id, first_name, last_name, major, current_credits,grade) VALUES (student_sequence.NEXTVAL, 'Joanne', 'Junebug', 'Computer Science', 75,null); INSERT INTO students (id, first_name, last_name, major, current_credits,grade) VALUES (student_sequence.NEXTVAL, 'Manish', 'Murgratroid', 'Economics', 66,null); commit; |
2.查看相应数据
SQL> select * from students;
ID FIRST_NAME LAST_NAME MAJOR CURRENT_CREDITS GR
---------- -------------------- -------------------- ------------------------------ --------------- --
10000 Scott Smith Computer Science 98
10001 Margaret Mason History 88
10002 Joanne Junebug Computer Science 75
10003 Manish Murgratroid Economics 66
|
3.更新语句
update students
set grade = (
select grade from
(
select id,
case when current_credits > 90 then 'a'
when current_credits > 80 then 'b'
when current_credits > 70 then 'c'
else 'd' end grade
from students
) a
where a.id = students.id
)
/
|
4.更新后结果
SQL> select * from students;
ID FIRST_NAME LAST_NAME MAJOR CURRENT_CREDITS GR
---------- -------------------- -------------------- ------------------------------ --------------- --
10000 Scott Smith Computer Science 98 a
10001 Margaret Mason History 88 b
10002 Joanne Junebug Computer Science 75 c
10003 Manish Murgratroid Economics 66 d
|
历史上的今天
- 2012-10-04 "无冕宰相"僧道衍 - 姚广孝塔纪行
- 2009-10-04 美景斑斓看不厌 - 纽约、千岛湖、尼亚加拉大瀑布