SQLServer:
select a.aaa,isnull(b.bbb,'') from table1 a,table2 b where a.ccc*=b.cccOracle:
select a.aaa,nvl(b.bbb,'') from table1 a,table2 b where a.ccc(+)=b.ccc

解决方案 »

  1.   

    注意是a.ccc is not in b.ccc而不是a.ccc is null,更不是 if b.bbb is null而怎么样
      

  2.   

    如下即可:
    select nvl(b.bbb,' ') from table1 a,table2 b where a.ccc=b.ccc(+);
      

  3.   

    to xzou(缺齿小狼):
    你試一下不就知道了嗎?
      

  4.   

    select a.aaa as aa,b.bbb as bb from table1 a,table2 b where a.ccc=b.ccc
    union 
    select a.aaa as aa,'' as bb from table1 a where a.ccc not in (select ccc from table2)
      

  5.   

    不好意思,刚才测试数据被别人删掉了,刚才测了一下,feng_zi(风子)的结果是正确的,何故,能解释一下吗?
      

  6.   

    難道我的不正確嗎?
    select a.aaa,nvl(b.bbb,' ') from table1 a,table2 b where a.ccc(+)=b.ccc (+)是左連接,以左邊的表為準.
    右邊的表中沒有的紀錄在這個select結果集
    中的b.bbb是null
    用nvl(b.bbb,' ')轉化為' '
      

  7.   

    我也不清楚,我也觉得是zhuzhichao(竹之草)的对,可惜实践证明是feng_zi(风子)的对,我暂时找不到介绍左(右)连接的书,请问有讲ORACLE PL/SQL基本语句的书吗?我有一本《ORACLE 8I PL/SQL高级程序设计〉,偏偏没讲这些最基本的,太痛苦了,初学ORACLE,很多具体PL/SQL语法不是很清楚
      

  8.   

    语句中用到了一个概念,即是外连接,a.ccc=b.ccc(+),其意是,扩展b表,即是a中有的记录合都选出,而b中只选ccc与a表相同的,(+)放在那个表上,就是扩展那个表
    大概就是这个意思吧,不对的地方请指正!