WEB开发网
开发学院数据库Oracle Oracle数据库入门之函数/类型 阅读

Oracle数据库入门之函数/类型

 2012-11-28 15:25:44 来源:WEB开发网   
核心提示:续二:转换函数不会改变表中数据的字段类型和值,它就相当于将数据复制了一份,Oracle数据库入门之函数/类型(2),所转换的是复制之后的数据数据类型转换包括隐含转换和显式转换两种方式,建议使用显式的数据类型转换,则返回null,通常最后一个表达式都是能确保不是空值的字段举例:select empno, ename, s
续二:转换函数不会改变表中数据的字段类型和值。它就相当于将数据复制了一份,所转换的是复制之后的数据
数据类型转换包括隐含转换和显式转换两种方式,建议使用显式的数据类型转换,确保SQL语句的可靠性
续三:通用函数适用于包括空值在内的任何类型数据。通常用来实现空值的处理,空值的过滤或设置缺省值等
通用函数包括nvl()、nvl2()、nullif()、coalesce()、case表达式、decode()等
嵌套:单行函数可以嵌套使用,嵌套层次无限制。分组函数最多可嵌套两层。嵌套函数的执行顺序是由内到外
单行比如select empno,lpad(initcap(trim(ename)),10,' ') 姓名, job, sal from emp;
多行比如select max(avg(sal)) from emp group by deptno;--其实这里再使用分组函数就没有意义了
说明:通常数据库层面提供的函数,只是进行数据的简单的处理,或者说是只能实现极为常规的功能
所以就不应该,或者说是不要指望在数据库查询的层面来实现特别复杂的业务逻辑
如果应用程序的逻辑跟数据库混在一起的话,会不利于代码的维护和更新
而且也不利于数据库的管理,包括数据移植,数据库导入导出等等



日期类型
概述:在计算机操作系统或者各种高级编程语言中,日期通常会被保存成一个长整数,通常记录的是毫秒
Oracle内部以数字格式存储日期和时间信息:世纪,年,月,日,小时,分钟,秒
缺省的日期格式是DD—MON—YY。可使用sysdata函数获取当前系统日期和时间
运算:日期型数据可以直接加或减一个数值,结果认为日期。约定的该数值代表的是相加减的天数
两个日期型数据可以相减,结果为二者相差多少天。二者不能,因为日期相加是没有意义的



NVL()函数
概述:它用于将空值null替换为指定的缺省值,适用于字符、数字、日期等类型数据
格式:NVL(exp1,exp2)--如果表达式exp1值为null,则返回exp2值,否则返回exp1值
举例:select empno, ename, sal, comm, sal+nvl(comm,0) from emp;
select empno, ename, job, nvl(job, 'No job yet') from emp;



NVL2()函数
概述:它用于实现条件表达式功能
格式:NVL2(exp1,exp2,exp3)--如果表达式exp1值不为null,则返回exp2值,否则返回exp3值
举例:select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) 总收入 from emp;



NULLIF()函数
概述:它用于数据等价性比较并根据比较结果返回null或其中一个被比较的数值。实际开发中应用并不是很多
格式:nullif(exp1,exp2)--如果表达式exp1与exp2的值相等,则返回null,否则返回exp1的值
举例:select name 原名, nullif(pen_name, name) 化名 from author;



COALESCE()函数
概述:它用于实现数据“接合”功能
格式:coalesec(exp1,exp2,...)--依次考察各参数表达式,遇到非null值即停止并返回该值
若表达式均为null值,则返回null。通常最后一个表达式都是能确保不是空值的字段
举例:select empno, ename, sal, comm, coalesec(sal+comm,sal,0) 总收入 from emp;



CASE表达式
概述:它用于实现多路分支结构
格式:case exp when comparison_exp1 then return_exp1
[when comparison_exp2 then return_exp2
when comparison_expn then return_expn
else else_exp]
end
举例:select empno, ename, sal,
case deptno when 10 then '财务部'
when 20 then '研发部'
when 30 then '销售部'
else '未知部门'
end 部门
from emp;
说明:CASE中的每一个表达式(如deptno,10,财务部等)都可以是复合而成的

Tags:Oracle 数据库 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接