代码之家  ›  专栏  ›  技术社区  ›  JScriptBeginner_25

当一列有更多值时,对join使用substr和instr

  •  0
  • JScriptBeginner_25  · 技术社区  · 6 年前

    我有以下两张表:

    Table 1
    Table 2

    Select t1.column A,
    t2.Column A,
    t2. Column B
    from table1 t1, table2 t2
    where substr(t2.column C,instr(t2.column c,'=',1,1)+1,3) = substr(t1.column C,1,3)
    AND substr(t2.column C,instr(t2.column c,':',1,1)+9,10) = substr(t1.column C,instr(t1.column C,';',1,1)+1,11)
    AND substr(t2.column C,instr(t2.column c,':',1,2)+9,10) = substr(t1.column C,instr(t1.column C,';',1,2)+1,11)
    

    但不幸的是,它没有返回任何结果。

    1 回复  |  直到 6 年前
        1
  •  0
  •   LukStorms    6 年前

    如果使用regexp\u replace,可以将第二个表中的“column C”转换为第一个表中使用的格式。

    一旦格式化为相同的格式,就可以对它们进行比较。
    那么只需要1个联接条件。

    select 
    t1."column A" as colA1, 
    t1."column B" as colB1, 
    t2."column A" as colA2, 
    t2."column B" as colB2
    from table1 t1
    join table2 t2 on (regexp_replace(t2."column C", '^\D+(\d+)\D+(\d+)\D+(\d+).*','\1;\2;\3') = t1."column C")
    

    SQL Fiddle测试 here