拼装SQL语句时看到有这么一句and t1.ID = t2.ID(+) 
and t2.CODE(+) = '%s'第一行是左外连接可以理解
第二行表示什么意思呢?

解决方案 »

  1.   

    第二行是外连接的连接条件的一部分
    因为是t1表左连接t2表
    作为连接条件,t2中的条件必须加(+)
    否则不会被当做连接条件处理用这种写法比较容易理解
    select * from t1 left join t2
    on t1.id=t2.id and t2.code='%s't2.code的值就是'%s'还是希望模糊匹配?如果是要匹配的话将=改成 like
      

  2.   

    也就是说第一行的(+)表示了这是一个左外连接
    第二行的(+)表示这也是连接条件,因为这种情况是含有%s(即只有等号的一侧是数据库的列),
    如果换成其他的条件是不是必需这么写?and t1.ID = t2.ID(+)
    and t1.CODE = t2.CODE(+)而下面这种写法必然是不对的?(因为写在左侧表示的是右外连接)
    and t1.ID = t2.ID(+)
    and t1.CODE(+) = t2.CODE
    ON的条件只能紧跟着放在from table后面么?  
    可否放在where子句中?
      

  3.   

    and t1.ID = t2.ID(+) 
    and t1.CODE(+) = t2.CODE 
    这个有逻辑错误,不能执行,因为第一行是左连接,到第二行变成右连接了。可以改成
    and t1.ID = t2.ID(+) 
    and t2.CODE(+) = t1.CODE on条件跟在join后面,是join语句的一部分
    如果还有where,可以放在on子句后面,作为对连接结果的过滤条件select * from t1 left join t2 
    on t1.id=t2.id and t2.code='%s' 
    where t2.code is not null