eygle.com   eygle.com
eygle.com  
 

« 回家纪事-之四 | Blog首页 | Oracle HowTo:如何使用Oracle的Decode函数进行多值判断 »

Oracle HowTo:如何使用Oracle case函数

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:
通过实例简要介绍case函数的用法。

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

By eygle on 2005-10-04 21:44 | Comments (0) | Posted to HowTo | Edit |Pageviews:

相关文章 随机文章
  • 如何判断一个字符串是否为数字或日期?
  • Oracle10g中SCN与TimeStamp的相互转换
  • 如何通过DB link进行远程过程或函数调用
  • 使用分析函数进行行列转换
  • Oracle HowTo:如何使用Oracle的Decode函数进行多值判断
  • Blogspot解禁-李开复博士与Google的中国化
    EMC CX500 阵列升级扩容
    答读者问:如何进一步提高Oracle技术水平
    Canon 400D更换记
    遭遇Magpie多年前的一个Bug
    网上相关主题:
    Google

    留言 (0)

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.