1查看表结构
SQL> desc teachers;
Name Type Nullable Default Comments
------------- ----------- -------- ------- --------
TEACHER_ID NUMBER(5)
NAME VARCHAR2(8)
TITLE VARCHAR2(6) Y
HIRE_DATE DATE Y sysdate
BONUS NUMBER(7,2) Y
WAGE NUMBER(7,2) Y
DEPARTMENT_ID NUMBER(3) Y
2查看表的数据
SQL> select * from teachers;
TEACHER_ID NAME TITLE HIRE_DATE BONUS WAGE DEPARTMENT_ID
---------- -------- ------ ----------- --------- --------- -------------
10101 王彤 教授 1990/9/1 1000.00 3000.00 101
10104 孔世杰 副教授 1994/7/6 800.00 2700.00 101
10103 邹人文 讲师 1996/1/21 600.00 2400.00 101
10106 韩冬梅 助教 2002/8/1 500.00 1800.00 101
10210 杨文化 教授 1989/10/3 1000.00 3100.00 102
10206 崔天 助教 2000/9/5 500.00 1900.00 102
10209 孙晴碧 讲师 1998/5/11 600.00 2500.00 102
10207 张珂 讲师 1997/8/16 700.00 2700.00 102
10308 齐沈阳 高工 1989/10/3 1000.00 3100.00 103
10306 车东日 助教 2001/9/5 500.00 1900.00 103
10309 臧海涛 工程师 1999/6/29 600.00 2400.00 103
10307 赵昆 讲师 1996/2/18 800.00 2700.00 103
10128 王晓 2007/9/5 1000.00 101
10328 张笑 2007/9/29 1000.00 103
10228 赵天宇 2007/9/18 1000.00 102
11111 林飞 2007/10/11 1000.00
3计算教师月收入,基本工资+奖金
SQL> select t.name as "姓名", t.bonus+t.wage as "月总收入" from teachers t;
姓名 月总收入
-------- ----------
王彤 4000
孔世杰 3500
邹人文 3000
韩冬梅 2300
杨文化 4100
崔天 2400
孙晴碧 3100
张珂 3400
齐沈阳 4100
车东日 2400
臧海涛 3000
赵昆 3500
王晓
张笑
赵天宇
林飞
16 rows selected
这里可以看到,在奖金为NULL的列上,虽然都为number类型,但这位老师的月收入为空了。显然是不对的。oracle没有默认的实现这个功能。
这个时候需要我们采用nvl函数来给列设置默认值,假如是空的,默认为零
SQL> select t.name as "姓名", nvl(t.bonus,0)+t.wage as "月总收入" from teachers t;
姓名 月总收入
-------- ----------
王彤 4000
孔世杰 3500
邹人文 3000
韩冬梅 2300
杨文化 4100
崔天 2400
孙晴碧 3100
张珂 3400
齐沈阳 4100
车东日 2400
臧海涛 3000
赵昆 3500
王晓 1000
张笑 1000
赵天宇 1000
林飞 1000
16 rows selected
这样就对了。
还可以使用nvl2函数
SQL> select t.name as "姓名" ,nvl2(t.bonus,t.bonus+t.wage,t.wage) as "总收入" from teachers t;
姓名 总收入
-------- ----------
王彤 4000
孔世杰 3500
邹人文 3000
韩冬梅 2300
杨文化 4100
崔天 2400
孙晴碧 3100
张珂 3400
齐沈阳 4100
车东日 2400
臧海涛 3000
赵昆 3500
王晓 1000
张笑 1000
赵天宇 1000
林飞 1000
16 rows selected
还可以利用coalesce函数(返回表达式中第一个非空值,如果都为空,则返回为空)来计算教师的月收入:
SQL> select t.name as "姓名" ,nvl2(t.bonus,t.bonus+t.wage,t.wage) as "总收入" from teachers t;
姓名 总收入
-------- ----------
王彤 4000
孔世杰 3500
邹人文 3000
韩冬梅 2300
杨文化 4100
崔天 2400
孙晴碧 3100
张珂 3400
齐沈阳 4100
车东日 2400
臧海涛 3000
赵昆 3500
王晓 1000
张笑 1000
赵天宇 1000
林飞 1000
16 rows selected
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com