如:有两个表tbl_1,tbl_2,在两表连接时,以tbl_1中的字段msg 和 tbl_2中的字段msg作为链接条件,在Oracle 9i 中,用如下语句:select * from tbl_1 left join tbl_2 on inStr(tbl_1.msg, tbl_2.msg) > 0;没有问题。但,在oracle 8i 里使用left jion 时,发现不支持请问如何在8i解决此问题,而又不降低查询效率,不胜感激。
(注:tbl_1 中的msg字段的值是  'abc' 或‘abc,bcd,edf'这样的字符串,字符串之间可能有逗号隔 开。 而tbl_2中的msg 值 是'abc' 或'bcd' 或 'edf'这样的字符串,字符串之间无逗号隔开。)  

解决方案 »

  1.   

    select *
      from tbl_1, tbl_2
     where instr (tbl_1.msg, tbl_2.msg) > 0;
      

  2.   

    select *
      from tbl_1, tbl_2
     where instr (','||tbl_1.msg||',', ','||tbl_2.msg||',') > 0;
      

  3.   

    bzszp(SongZip) ( ) 
    select *
      from tbl_1, tbl_2
     where instr (','||tbl_1.msg||',', ','||tbl_2.msg||',') > 0;这个对.
      

  4.   

    select *
      from tbl_1, tbl_2
     where instr (','||tbl_1.msg||',', ','||tbl_2.msg||',') > 0;多此一举了,而且依然奇慢无比。
      

  5.   

    select *
      from tbl_1, tbl_2
     where instr (tbl_1.msg, tbl_2.msg) > 0;
      这样的查询效率很慢。
      

  6.   

    8i中不支持left join,这是9i中新增加的对ISO 99 SQL标准的支持。
      

  7.   

    用外连接
    select * from tabl,tab2
    where tabl.msg = tab2.msg(+);
      

  8.   

    支持用外连接
    select * from tabl,tab2
    where tabl.msg = tab2.msg(+);
      

  9.   

    支持,但是写法不一样 用t1.col1=t2.col2(+)的形式