【问题标题】:Join tables with different column values连接具有不同列值的表
【发布时间】:2015-06-07 05:13:46
【问题描述】:

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

我想我应该可以使用 REGEXP_LIKE 但如何在这个函数中使用列? '.column_name.......' 无法正常工作。我试着环顾四周,但现在卡住了。

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

感谢您的宝贵时间!

【问题讨论】:

  • 看看一些样本数据就好了。因为不清楚您要做什么或要问什么。
  • 表 A 有 8 列 abd 表 B 有 3,我想加入它们,但唯一的方法是这样做:903555555555 = 03 或 707123456789 = 07
  • 所以你希望表1的列的第2个和第3个字符被匹配。使用SUBSTR

标签: regex join oracle11g oracle-sqldeveloper


【解决方案1】:

所以如果我们有一个表 tblA 在列 colA 中有一个短数字,而在 列中有一个长数字的 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

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多