2015-04-02 96 views
0

我想连接2个表,其中唯一可能的连接是由两个不同的列组成。 列A是一个十二个字符长的数字,而另一个(B)是两个字符长的数字。他们可以加入,因为A就像.BB .........,所以2和3是从B中取出的(在其他情况下这是可能的)。连接具有不同列值的表

我想我应该可以使用REGEXP_LIKE,但是如何在此函数中使用列? '.column_name .........'不自然地工作。我试图环顾四周,但我现在卡住了。

表B中有20行,我想一次检查所有行。

谢谢你的时间!

+0

这将是很好的看到一些样本数据。因为你不清楚你想要做什么或要求什么。 – 2015-04-02 09:57:15

+0

有A列8列abd B列3列,我想加入他们,但唯一的方法就是这样做:903555555555 = 03或707123456789 = 07 – 2015-04-02 09:59:11

+1

所以你想要第二个和第三个字符表1的列将被匹配。使用'SUBSTR' – 2015-04-02 10:43:30

回答

1

因此,如果我们有一个表TBLA列可乐短号码和一个talbe TBLB有长数COLB。 我们可以创建一个中间表tmpTblB包括TBLB的所有列并计算值myNum的作为一个子串出COLB。最后,刚刚加入的TBLAtmpTblB

SELECT * 
FROM tblA 
    LEFT OUTER JOIN (
    SELECT tblB.*, SUBSTR(tblB.colB, 2, 2) AS myNum 
    FROM tblB) tmpTblB 
    ON tblA.colA = tmpTblB.myNum