假设表A,有字段A_COL
小弟想问下,在where子句中有一个条件是 'and A.A_COL(+) is NULL'
这里的(+)是什么意思,有人说是把空值也显示,不懂,条件子句和显示有什么关系

解决方案 »

  1.   

    给你个例子 SQL> SELECT D.DEPTNO,E.EMPNO,E.ENAME,E.JOB,E.HIREDATE,E.SAL
      2  FROM
      3  DEPT D,EMP E
      4  WHERE D.DEPTNO=E.DEPTNO(+);--显示dept表中的deptno即使在emp中没有    DEPTNO      EMPNO ENAME      JOB       HIREDATE              SAL
    ---------- ---------- ---------- --------- -------------- ----------
            10       7782 CLARK      MANAGER   09-6月 -81           2450
            10       7839 KING       PRESIDENT 17-11月-81           5000
            10       7934 MILLER     CLERK     23-1月 -82           1300
            20       7369 SMITH      CLERK     17-12月-80            800
            20       7566 JONES      MANAGER   02-4月 -81           2975
            20       7788 SCOTT      ANALYST   19-4月 -87           3000
            20       7876 ADAMS      CLERK     23-5月 -87           1100
            20       7902 FORD       ANALYST   03-12月-81           3000
            30       7499 ALLEN      SALESMAN  20-2月 -81           1600
            30       7521 WARD       SALESMAN  22-2月 -81           1250
            30       7654 MARTIN     SALESMAN  28-9月 -81           1250    DEPTNO      EMPNO ENAME      JOB       HIREDATE              SAL
    ---------- ---------- ---------- --------- -------------- ----------
            30       7698 BLAKE      MANAGER   01-5月 -81           2850
            30       7844 TURNER     SALESMAN  08-9月 -81           1500
            30       7900 JAMES      CLERK     03-12月-81            950
            40
      

  2.   

    这是Oracle的外连接形式,具体你可以参考:http://www.examda.com/oracle/zonghe/20100607/093510617.html
      

  3.   

    别用了这个了,oracle的老写法了,现在oracle都支持sql99了,还是用left join吧。
      

  4.   


    首先谢谢你的回答
    左右用=比较的时候,我知道(+)的意义,你的这个例子是平常用的,我想问的是当一边为is null的时候表示什么意思
    是一样的吗?
    貌似真是一样的,就是说显示所有的值,无论是否为空。
    但是本身就去比较NULL,不是会矛盾吗?或者说是多此一举,和'and A.A_COL is NULL'有什么区别呢?
      

  5.   

    (+)号一般表示左右连接,这么用虽然语法不会报错,但无任何意义,等价A.A_COL is NULL