单行函数(6)

除了直接对数字格式化,也可以进行货币的显示

SELECT TO_CHAR(987654321.789,'L999,999,999,999.9999') 显示货币, TO_CHAR(987654321.789,'$999,999,999,999.9999') 显示美元 FROM dual;

在开发之中,TO_CHAR() 函数的作用还是非常明显的!建议掌握!

6.5.2 TO_DATE() 函数

这个函数主要是将字符串变为日期型数据,而改变的过程里面依然需要之前 TO_CHAR() 函数出现的相关标记。

范例:转换时间显示

SELECT TO_DATE('1979-09-19','YYYY-MM-DD') FROM dual;

在之前讲解日期函数时使用了一个 TO_TIMESTAMP() 函数,这个函数是将字符串变为时间戳。

范例:时间戳转换

SELECT TO_TIMESTAMP('1981-09-27 18:07:10','YYYY-MM-DD HH24:MI:SS') datetime FROM dual; 6.5.3 TO_NUMBER() 函数

作用是将字符串变为数字

范例:将字符串变为数字

SELECT TO_NUMBER('09') + TO_NUMBER('19') 加法操作, TO_NUMBER('09') * TO_NUMBER('19') 乘法操作 FROM dual;

但是在之前强调过,Oracle 里面支持数据类型的自动转型操作,上面的代码也可写为

SELECT '09' + '19' 加法操作, '09' * '19' 乘法操作 FROM dual; 6.6、通用函数

这些函数是 Oracle 数据库的特色,对于这些函数了解有一定的好处。

No.函数名称描述
1   NVL(数字|列 , 默认值)   如果显示的数字是null的话,则使用默认数值表示  
2   NVL2(数字|列,返回结果一(不为空显示),返回结果二(为空显示))   判断指定的列是否是null,如果不为null则返回结果一,为空则返回结果二  
3   NULLIF(表达式一,表达式二)   比较表达式一和表达式二的结果是否相等,如果相等返回NULL,如果不相等返回表达式一  
4   DECODE(列|值,判断值1,显示结果1,判断值2,显示结果2,...,默认值)   多值判断,如果某一个列(或一个值)与判断值相同,则使用指定的显示结果输出,如果没有满足条件,在显示默认值  
5   CASE 列|数值 WHEN 表达式1 THEN 显示结果1 ... ELSE 表达式N ... END   用于实现多条件判断,在WHEN之后编写条件,而在THEN之后编写条件满足的显示操作,如果都不满足则使用ELSE 中的表达式处理  
6   COALESCE(表达式1,表达式2,...表达式n)   将表达式逐个判断,如果表达式1的内容是null,则显示表达式2,如果表达式2的内容是null,则显示表达式3,依次类推,如果表达式n的结果还是null,则返回null  

对于通用函数而言,只有两个核心函数:NVL() , DECODE()

6.6.1 使用 NVL() 函数处理 null

在数据库之中,null 是无法进行计算的,即,在一个数学计算之中如果存在了 null,则最后的结果也肯定是 null

范例:查询出每个雇员的编号、姓名、职位、雇佣日期、年薪

对于年薪最准确的做法是应该计算 “sal + comm”,可是这个时候 comm 列上是存在了 null 数据的

SELECT empno,ename,job,hiredate,(sal+comm)*12 年薪,sal,comm FROM emp;

因为 comm 上的内容有的是 null,而现在发现,只要是 comm 为 null 的计算,最终的结果就是 null ,所以在这种情况下需要针对于 null 进行处理,肯定将 null 变为0才合适

范例:验证 NVL()

SELECT NVL(null,0),NVL(3,0) FROM dual;

这个时候发现如果为 null,那么就将其变为了0,如果不是 null,就继续使用指定的数值

SELECT empno,ename,job,hiredate,(sal+NVL(comm,0))*12 年薪,sal,comm FROM emp; 6.6.2 NVL2() 函数

NVL2() 函数是在 Oracle 9i 之后增加的一个新的功能函数,相比较 NVL() 函数,NVL2() 函数可以同时对为 null 或不为 null 进行分别判断并返回不同的结果

范例:查询每个雇员的编号、姓名、年薪(sal + comm)、基本工资、奖金

SELECT empno,ename,job,hiredate,NVL2(comm,sal+comm,sal),sal,comm FROM emp; 6.6.3 NULLIF() 函数

NULLIF(表达式一,表达式二) 函数的主要功能是判断两个表达式的结果是否相等,如果相等则返回 NULL ,不相等则返回表达式一

范例:验证 NULLIF() 函数

SELECT NULLIF(1,1),NULLIF(1,2) FROM dual;

范例:查询雇员编号、姓名、职位,比较姓名和职位的长度

SELECT empno,ename,job,LENGTH(ename),LENGTH(job),NULLIF(LENGTH(ename),LENGTH(job)) nullif FROM emp; 6.6.4 DECODE() 函数

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4660a92bd9f744bd670d3268e8dfdc88.html