今日份知识学习
从今天开始,我们来学习Oracle数据库的一些知识,其中包含一些函数的使用,或者是特性的介绍讲解等,将会在系列文章内说到。
今天我们要来学习的就是Oracle中如何处理空值,并且处理空值时有哪些相应的函数。
具体讲解
在Oracle中,Null值是不能被运算符计算的,所以,我们通常会使用一些函数来解决这个空值判断的问题。
比如以下几个方法函数。
NVL函数
NVL函数,内含两个参数,第一个参数是字段或者是相关值,第二个参数是如果第一个参数为空后将要替换的值。
示例代码:
select nvl(name, '空') from user_table;
COALESCE函数
如果说有多个参数需要一同判断时,使用NVL函数就显得复杂了一些,比如下面这个例子:
select nvl(nvl(chn_name, nvl(eng_name, name)), '空') from user_table;
但如果我们使用coalesce函数来写这段SQL时,将会比较清晰,如下:
select coalesce(chn_name, eng_name, name, '空') from user_table;
coalesce函数中可以加入多个参数,但是最少要有一个参数才行。
其中的逻辑就是,判断第一个参数是否为空,不为空直接返回,为空的话将接着验证第二个参数,以此类推。
一直获取到不为空的参数为止,也就是获取多个参数中第一个不为空的值。
decode函数
decode函数就不太一样了,相对于上述两种函数,此函数不单单是针对处理空值的,而是具有处理空值的本领而已。
decode可以传输三个参数,第一个参数和第二个参数分别是字段和将要比对的值,第三个参数是如果对比成功后所返回的值。当然,如果没有对比成功,则返回第一个参数字段信息。
这个函数同时也经常被用来做一些参数的对比功能。
总结
不同函数在处理空值时,都有些特点,还是尽量多试试才行。