ITPub博客

首页 > 数据库 > Oracle > 转换函数和通用函数

转换函数和通用函数

原创 Oracle 作者:x辛诺x 时间:2016-01-07 22:50:20 0 删除 编辑

目标:

         1、了解SQL里面的转换函数

         2、重点是“TO_CHARTO_NUMBERTO_DATE

         3、通用函数

Agenda

         一、讨论什么是数据类型的转换

                  lmplicit ---> 隐式的

                  explicit ---> 显式的

         二、“TO_CHARTO_NUMBERTO_DATE”的用法

         三、函数嵌套

         四、通用函数

                  --- NVL

                  --- NVL2

                  --- NULLIF

                  --- COALESCE

         五、条件表达式

                  --- CASE

                  --- DECODE

 

一、讨论什么是数据类型的转换

                  lmplicit ---> 隐式的转换

                  explicit ---> 显式的转换

 

lmplicit ---> 隐式的转换:由oracle自动完成,比如说输入一个日期,输入的是一个字符串,oracle会自动转换成日期(日期在oracle数据库中是由数值来表示的)。

explicit ---> 显式的转换:用户通过调用oracle内嵌的转换函数进行转换

 

lmplicit ---> 隐式的转换


VARCHAR2CHAR的区别:CARCHAR2是可变长度的字符串,CHAR是固定长度的字符串。

示例:




explicit ---> 显式的转换





二、“TO_CHARTO_NUMBERTO_DATE”的用法

日期转换成字符串


format_model

         1、必须要用单引号引起来

         2、大小写敏感

         3、可以包含任何有效的日期格式类型元素,但不是并不是所有的字符都可以

         4、加“fm”可以消除前导0或者空格

示例:


消除前导0示例:




除了包含年月日以外还有其它的,比如:


数值转换成字符串



示例:




format_model要留出足够的长度容纳被转换的数值,不然就会以“#”显示出来

 

字符转换成数值


示例:


假如不加‘$9,999.99’会如何呢?


明显出错了

  

字符串转换成日期


示例:


如果‘july 4, 2008’中间有多个空格可不可以呢?


即发现是可以的,那如果加了“fx”呢?

发现不可以,即fx 代表精确匹配




三、函数嵌套


先计算内部的,即先计算F1,将结果当做F2的一个参数,然后计算F2,将结果当做F3的一个参数。

示例:




四、通用函数

                  --- NVL

                  --- NVL2

                  --- NULLIF

                  --- COALESCE

 

NVL

如果第一个参数不是NULL,返回的结果就是第一个结果;如果第一个参数是NULL,返回的结果就是第二个结果

NVLcommission_pct,0

在数学表达式里面如果一个元素是NULL,那整个表达式是NULL,我们就可以使用这个表达式解决这个问题。

比如:NVLhire_date,’01-JAN-07’

           NVLjob_id,’No Job Yet’

示例:计算年终分红




NVL2

有三个参数,如果第一个参数是非NULL的话,那么返回第二个参数,如果第一个参数是NULL的话,那么返回第三个参数。

示例:




NULLIF

两个参数,如果两个参数相等,那么返回NULL值,如果两个参数不相等,那么就返回第一个参数的值。

示例:




COALESCE

    N多个参数,然后从左往右数,返回的结果就是碰到第一个非NULL值那么就把这个值返回出来,比如这N个参数为1N
那么第一个是“1”,是非NULL值,那么就把这个“1”返回出来。

示例:



五、条件表达式

                  --- CASE ---> SQL国际标准指定的

                  --- DECODE ---> oracle特定的

假如以后需要数据可移植行更好,比如说从oracle移植到其他的数据库中,那么就最好用CASE

 

CASE


    就是exprcomparison_expr1比较,如果相等,那返回return_expr1,如果不等则和comparison_expr2比较,相等则返回return_expr2
如果不等则和return_exprn比较,相等则返回comparison_exprn,不等就返回else_expr

示例:


功能很强大,但是写起来很繁琐,所以oracle就增加了一个DECODE

 

DECODE


示例:和CASE相同,但是不那么繁琐


查询出来的结果相同

 

根据每个雇员不同的税率计算出一个税表

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30197839/viewspace-1973516/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 单行函数
下一篇: 复习题(1)
请登录后发表评论 登录
全部评论

注册时间:2015-04-08

  • 博文量
    21
  • 访问量
    10067