认识ORACLE中的dual表
首先要了解dual表是什么?
dual表是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录。常用在没有目标表的select语句块中。
常见用法
活用dual表的一些常见用法,可以使你的sql更容易形成预期的结构:
-
连接两个字符串
结果:
-
使用nvl函数
结果:
这些用nvl判断过后的值可以直接用来给别的insert或者update操作;
例如:
INSERT INTO table1 ( a1, a2, a3, a4 )
(SELECT nvl(‘b1’,‘test1’), nvl(‘b2’, ‘test2’), nvl(‘b3’, ‘test3’), nvl(‘b4’, ‘test4’) FROM dual);如果不了解nvl函数的用法,本文后面会有介绍。
-
查看当前用户
select user from dual;这里的user是当前数据库的管理者。
-
查询当前日期时间
结果:
用来作简单的查询日期的操作; -
进行计算操作
select 5*6 from dual;
select 9-3 from dual;sql中想要一些计算过后的值作为条件,就可以使用这种写法。
结论:从上面不难看出,dual表仅仅是一张虚拟表,用来构成select的语法规则,让sql能够正常执行。MySQL中也存在dual表,不过与ORACLE略有不同,这里不作详细介绍了,有兴趣的童鞋自己查看一下资料吧。
简单说一下NVL的用法:
1. NVL(’’,'test1 ’ )
NVL函数包含两个参数,如果第一个参数不为空或者null,则取第一个参数为值,否则取第二个参数为值;
2.NVL2(a1, a2, a3)
NVL2函数包含3个参数,如果第一个参数为空,则取第二个参数为值;如果第一个参数不为空,则取第三个参数为值;
3.NULLIF(a1, a2)
NULLIF函数包含2个参数,如果两个参数相等,则值为空(null);如果两个参数不相等,则取第一个参数为值。