`
chenhua_1984
  • 浏览: 1257997 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

oracle 基础知识:两个number列相加

阅读更多

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

 

 

分享到:
评论

相关推荐

    oracle常用的算术符号总结

    ### Oracle常用的算术符号总结 #### 一、概述 Oracle是一种广泛使用的数据库管理系统,它提供了...这些基础知识对于任何想要深入学习Oracle数据库的人来说都是不可或缺的。希望本篇文章能对Oracle初学者有所帮助。

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 谓语前推 42 2.10 使用物化视图...

    第5章 数据类型和运算符.ppt

    这些运算符用于进行基本的数学计算,例如,两个数值的相加或相乘。 2. **比较运算符**:如>(大于)、<(小于)、=(等于)、>=(大于等于)、(小于等于)、!=(不等于),以及IN、BETWEEN AND、IS NULL、LIKE等。...

    plsql 简单教程

    例如,我们可以使用以下代码将两个变量相加并打印结果: ```sql BEGIN var1 := 5; var2 := 10; DBMS_OUTPUT.PUT_LINE('Sum: ' || (var1 + var2)); END; ``` PL/SQL中的异常处理部分使用`EXCEPTION`关键字来捕获和...

    js学习笔记

    ### JavaScript 学习笔记知识点概览 #### 一、JavaScript 概述 - **JavaScript**是一种**基于对象和事件驱动**的脚本语言,主要应用于客户端...希望这份学习笔记能够帮助大家更好地理解和掌握 JavaScript 的基础知识。

Global site tag (gtag.js) - Google Analytics