如何将表中的值匹配到oracle中的特定位置?

如何将表中的值匹配到oracle中的特定位置?,oracle,Oracle,我必须编写一个查询来匹配两个表中的值,表a和表B,表a在XYZ列中的值为91517181915171812,我想检查它是否存在于表B中,但在表B中,ABC列中的值为9151718,但在表B的另一列中,它的匹配长度为10。这意味着它最高可达9151718XXX。 因此,我必须编写一个查询,其中表a中的值应该与表B中的值匹配,因为在表B中,值最多为10个字符。 请帮忙……我想你需要这样的东西: table a: table b: xyz x

我必须编写一个查询来匹配两个表中的值,表a和表B,表a在XYZ列中的值为91517181915171812,我想检查它是否存在于表B中,但在表B中,ABC列中的值为9151718,但在表B的另一列中,它的匹配长度为10。这意味着它最高可达9151718XXX。 因此,我必须编写一个查询,其中表a中的值应该与表B中的值匹配,因为在表B中,值最多为10个字符。
请帮忙……

我想你需要这样的东西:

table a:             table b:
xyz                  x           y
----------           ----------  ---
9151718              9151718      10
91517181             91360         5
913601

我是这样想的: 从where中选择* 退出从b中选择“x”,其中substrxyz,1,y=x x-b中的值
b中的y长度

您的问题不清楚,能否进一步澄清?您认为值最多为10个字符是什么意思?这意味着如果在表B中,X列中的值为9151718,Y列中的值为10,如果我们将其与表A中的值相匹配,如91517181和915171812,则应与之匹配,因为10表示要匹配的字符的开始和结束位置。如果表B中的值为91360,Y列中的值为5,如果我们将其与包含913601的表A中的值匹配,则不应匹配,因为91360为5个字符,913601为6。是否要匹配列的字符长度?非常感谢Stibbons先生。。你的询问真的很有帮助。
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