Oracle常用函数以及行列转换

上传人:ji****72 文档编号:37525235 上传时间:2018-04-17 格式:DOCX 页数:8 大小:122.80KB
返回 下载 相关 举报
Oracle常用函数以及行列转换_第1页
第1页 / 共8页
Oracle常用函数以及行列转换_第2页
第2页 / 共8页
Oracle常用函数以及行列转换_第3页
第3页 / 共8页
Oracle常用函数以及行列转换_第4页
第4页 / 共8页
Oracle常用函数以及行列转换_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Oracle常用函数以及行列转换》由会员分享,可在线阅读,更多相关《Oracle常用函数以及行列转换(8页珍藏版)》请在金锄头文库上搜索。

1、常用的函数常用的函数数值函数数值函数ABS(N) 返回指定值的绝对值CEIL(N) 返回大于或等于给出数字的最小整数FLOOR(N) 对给定的数字取整数MOD(M,N) 返回一个 M 除以 N 的余数ROUND( M ,N ) 按照指定的小数位元数进行四舍五入运算的结果参数:如果 N 不为整数则截取 N 整数部分,如果 N0 则四舍五入为 N 位小数,如果N 小于 0 则四舍五入到小数点向左第 N 位。TRUNC(M,N) 返回 M 按精度 N 截取后的值参数:如果 N 不为整数则截取 N 整数部分,如果 N0 则截取到 N 位小数,如果 N 小于 0 则截取到小数点向左第 N 位,小数前其它

2、数据用 0 表示。转换函数转换函数TO_CHAR (NUMBER | date,format)TO_NUMBER (char , format)TO_DATE (char, format)分组函数分组函数MAXAVGMINCOUNTSUM字段为空的判断字段为空的判断NULL 的概述的概述NULL 在 Oracle 中是很特殊的值,任何类型的值都可以是 NULL。如果在某行中有一列没有值,那么就说慈航中这个列的值是 NULL。NULL 是未知的东西,常称它为“UNKNOWN”或空值。正因为它是未知的,才会有很多值得注意的规则。NULL 可以是任何数据类型的值,也可以不依赖于数据类型单独存在(字面

3、量 NULL),任何没有 NOT NULL约束或主键约束的列都有可能出现 NULL 值。NULL 和其他任何值都不相等或相等,包括自身(当然是用 IS NULL 判断是可以的)。但是在某些时候,Oracle 却把他们当成相等的(指 Oracle 的一些内部规则),如 SQL 集合语句、Group by 分组、Decode 函数等。NULL 的判断和比较运算规则的判断和比较运算规则Oracle 中判断一个列值或变量值是否是 NULL,必须是用 IS NULL 或 IS NOT NULL,而不能使用=NULL 或BINARY_FLOATNUMBER。如果 expr1 是字面量 NULL,expr2

4、 是非 NULL。则转为 expr2 类型,返回值同expr2。NVL2 函数函数语法:NVL(expr1,expr2,expr3)描述:常用于对 expr1 的值不管是否是 NULL 都要转换的需求。比 NVL 要先进一点,加了额外的判断,expr1 如果是 NULL 则返回 expr3,否则返回 expr2。这里的类型转换就和 expr1 没有关系了,一般要求 expr2 和 expr3 类型要一致,如果不一致则采用自动类型转换。如果 expr2 是字符类型,在比较前将 expr3 转换为 expr2 类型,如果 expr3 是字面量 NULL,则没有必要转换。如果 expr2 是数值类型

5、,Oracle 会检查 expr2 和 expr3 的数值类型优先级,然后将低优先级的参数类型转换为高优先级的参数类型,最后返回值类型就是高优先级的类型。如果 expr2 是字面值 NULL,expr3 不是 NULL,则返回值同 expr3 类型。下面的 6 个例子中哪些是错的呢?select NVL2(NULL,1,2) from dual;select NVL2(NULL,1,2) from dual;select NVL2(NULL,NULL,2) from dual;select NVL2(NULL,1,2) from dual;select NVL2(NULL,1,a) from

6、dual;select NVL2(NULL,a,1) from dual;NULLIF 函数函数语法:NULLIF(expr1,expr2)描述:判断 expr1 和 expr2 是否相等,若相等则返回 NULL,否则则返回 expr1。注意和 NVL、NVL2 函数不同的是,expr2 要与 expr1 类型相同,必须类型相同。另外还有一点 expr1 不能是字面量 NULL。COALESCE 函数函数语法:COALESCE(expr1,expr2,exprn)描述:此函数可以接受多个表达式或字面量值,从左到右返回第一个非 NULL 值,如所有的列元素都为 NULL,则返回 NULL。它有短

7、路计算功能,比如 expr1 为NULL,expr2 非 NULL,则返回 expr2 的值,不再计算 expr3 的值,其他依次类推。它实现的功能可以用 NVL、CASE WHEN 或 DECODE 代替,当然对于找第一个非 NULL 值,用这个函数是最简单的。注意:此函数要求所有的变量都是同一类型,否则会报错。CASE 表达式和表达式和 DECODE 函数处理函数处理 NULL语法:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )Simple Oracle case 表达式,使用表达式确定返回值case search_

8、expression WHEN expression1 THEN result1 . WHEN expressionN THEN resultN ELSE default_result ENDSearched case 表达式,使用条件确定返回值caseWHEN condition1 THEN result1 .WHEN condistionN THEN resultNELSE default_resultENDSimple case 无法精确匹配 NULL,而 DECODE 可以匹配 NULL,如果不需要匹配 NJULL,那么和 DECODE 的功能是一样的。Searched case 使用

9、范围更广泛,可以对非等值条件以及 NULL 进行判断,而 DECODE和 SIMPLE CASE 要实现非等值判断比较麻烦,可以与 SIGN 函数配合使用。SIGN(N)描述:取数字 N 的符号,大于 0 返回 1,小于 0 返回-1,等于 0 返回 0THEN 和 ELSE 后面的数据类型必须一致。行转列行转列1、decode 行转列行转列这就是最常见的行转列,主要原理是利用 decode 函数、聚集函数(sum),结合 group by 分组实现的。对上面的 decode 行转列做一个衍生,希望查询出的结果如下所示:2、case 行转列行转列这个也是常见的行转列,主要原理和 decode 函数一样。3、11g 新特性之新特性之 PIVOT 函数实现行转列函数实现行转列详见 “11g 中的 pivot 和 unpivot 转换操作.pdf”

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号