表名和表字段名,都分别列下,要不然别人不好写SQL语句。

解决方案 »

  1.   

     
        select a.*
         from a
     left join b on a.caller = decode( regexp_instr(a.caller,'^1[3458]\d{9}$'),1,b.adphone,b.adcode);
       
       或者:
       [-code=sql]
       select a.*
         from a
     left join b on a.caller = decode( regexp_instr(a.caller,'^(010|02\d|0[3-9]\d{2})?\d{6,8}$'),1,b.adcode,b.adphone);
       [/code]
      

  2.   

      或者:
       
       select a.*
         from a
     left join b on a.caller = decode( regexp_instr(a.caller,'^(010|02\d|0[3-9]\d{2})?\d{6,8}$'),1,b.adcode,b.adphone);
       
      

  3.   

    decode( regexp_instr(a.caller,'^1[3458]\d{9}$'),1,b.adphone,b.adcode);想问一下 这里的1是匹配成功返回1吗  不是应该返回匹配成功的字符串吗