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