当前位置: 代码迷 >> Oracle开发 >> left join on有关问题:是否可以使用or
  详细解决方案

left join on有关问题:是否可以使用or

热度:98   发布时间:2016-04-24 06:41:59.0
left join on问题:是否可以使用or
本帖最后由 hwhtj 于 2014-05-27 09:57:08 编辑
有表tba
sfzh(一个字段)

有表tbb
name,phone,sfzh,dz,等字段

表tbb中的sfzh字段,存储的可能是加密数据,也有可能是明文
解密方法是:REPLACE(TRANSLATE(sfzh,'BA@GFEDKJC+','1234567890X'),'^1','')

现在需要根据表tba中的身份证sfzh查询表tbb中的相关信息
我使用如下查询
select b.name,b.phone,b.sfzh,b.dz from tba a left join tbb b on a.sfzh=b.sfzh or a.sfzh=REPLACE(TRANSLATE(b.sfzh,'BA@GFEDKJC+','1234567890X'),'^1','')


30多分钟没有出来结果
tba 2000条记录,tbb 10万条记录


求助:请高手给出正确的写法


------解决方案--------------------
tba是小表,应该以它作为驱动表
a.sfzh=REPLACE(TRANSLATE(b.sfzh,'BA@GFEDKJC+','1234567890X'),'^1','')
要改成
b.sfzh=balabala.....(a.sfzh....)

在b.sfzh上要有个索引
------解决方案--------------------
tbb 有10万条记录,建议对该表使用索引
  相关解决方案