oracle 的 外连接和nvl() 的区别 最好有一些文档说明
发布网友
发布时间:2022-04-12 11:58
我来回答
共3个回答
热心网友
时间:2022-04-12 13:27
这一个是连接,一个是函数。
外连接outer join:即使连接条件中得一列包含空值也会返回一行
SCOTT>select e.ename,e.deptno,d.dname from emp e,dept d where e.deptno(+)=d.deptno;
ENAME DEPTNO DNAME
-------------------- ---------- ----------------------------
KING 10 ACCOUNTING
CLARK 10 ACCOUNTING
MILLER 10 ACCOUNTING
FORD 20 RESEARCH
SMITH 20 RESEARCH
JONES 20 RESEARCH
JAMES 30 SALES
TURNER 30 SALES
MARTIN 30 SALES
WARD 30 SALES
ALLEN 30 SALES
BLAKE 30 SALES
OPERATIONS
已选择13行。
nvl():是一个函数。可以将空值转换成另外一个可以真正理解的值。
1* select nvl(e.ename,'null'),e.deptno,d.dname from emp e,dept d where e.deptno(+)=d.deptno
SCOTT>/
NVL(E.ENAME,'NULL') DEPTNO DNAME
-------------------- ---------- ----------------------------
KING 10 ACCOUNTING
CLARK 10 ACCOUNTING
MILLER 10 ACCOUNTING
FORD 20 RESEARCH
SMITH 20 RESEARCH
JONES 20 RESEARCH
JAMES 30 SALES
TURNER 30 SALES
MARTIN 30 SALES
WARD 30 SALES
ALLEN 30 SALES
BLAKE 30 SALES
null OPERATIONS
已选择13行。
估计你想知道的是这个答案把。。其实两者本来没太大的联系。。只是就对空值的理解。
热心网友
时间:2022-04-12 14:45
这两者貌似没多大联系吧
left join表示左外连接;right join表示右外连接;full join表示完全外连接;
on子句用于指定连接条件。注意,如果使用from子句指定内、外连接,则必须要使用on子句指定连接条件;
如果使用(+)操作符指定外连接,则必须使用where子句指定连接条件。
nvl()是把空值转换的函数
例如
nvl(字段名,0)的意思是把该字段所有为空的记录转换为0.
文档嘛,你百度一下就有,很方便的
谢谢采纳
热心网友
时间:2022-04-12 16:20
你是要比较外连接和nvl()函数?似乎没什么可比性吧?
外连接有left (outer) join,right (outer) join 用于连接两个相关的表做数据查询,例如:
select col1,col2 from table1 a left join table2 b on a.xx=b.xx
nvl()函数...打个比方吧,nvl(a,0)如果a的值不为空取a的值,如果a的值为空取0