如何将表中的值与oracle中的特定位置进行匹配?

时间:2015-05-07 10:32:43

标签: oracle

我必须编写一个查询以匹配两个表中的值,表A和表B,表A在XYZ列中具有值" 91517181"," 915171812",我想要检查它是否存在于表B中,但在表B中,ABC列中的值为" 9151718",但在表B中的另一列中,其匹配长度为" 10& #34 ;.这意味着它是" 9151718XXX"。 所以我必须编写一个查询,其中表A中的值应该与表B中的值匹配,因为在表B中,该值最多为10个字符。 请帮助...

2 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:

table a:             table b:
xyz                  x           y
----------           ----------  ---
9151718              9151718      10
91517181             91360         5
913601
select a.xyz, rpad(xyz, b.y, 'x') result, b.x pattern, b.y len
  from a 
  left join b on a.xyz like b.x||'%' and length(a.xyz)<=b.y
xyz         result      pattern     len
----------  ----------  ----------  ---
9151718     9151718xxx  9151718      10
91517181    91517181xx  9151718      10
913601                                      <- not matched

答案 1 :(得分:0)

我认为是这样的: select * from a where exists(select 'x' from b where substr(xyz, 1, y) = x) x - b中的值 y - b中的长度