【问题标题】:Join statement with two different tables with similar but different data/keys具有相似但不同数据/键的两个不同表的联接语句
【发布时间】:2021-10-25 19:10:58
【问题描述】:

我正在尝试对两个表进行连接,其中一个表具有干净的主键,而另一个表具有相同的主键数据,但带有额外的字符。

有没有办法对两列进行匹配作为结果?即使它们在某些方面有所不同?

select tbl1.cd, tbl1.nm, tbl1.vend_typ_id, tbl2.uidy, tbl2.addr_l1, tbl2.addr_l2, tbl2.addr_city, tbl2.addr_ctry, tbl2.addr_nm, tbl2.addr_stae, tbl2.addr_zpcd

from table1 tbl1
inner join table2 tbl2 on tbl1.cd = tbl2.uidy

表1主键数据:

C000001628

C000001629

C000000208

C000000732

表2主键数据:

&4025&1250&C000001628&*&P

&4025&1250&C000001629&*&P

&4025&1250&C000000208&*&P

&4025&1250&C000000732&*&P

数据也不总是这样。我可以只得到“喜欢”匹配的结果吗?

【问题讨论】:

    标签: sql oracle inner-join


    【解决方案1】:

    这样说在语法上是有效的

    inner join table2 tbl2 on tbl2.uidy like '%' || tbl1.cd || '%'
    

    这将阻止 Oracle 使用 table1 上的主键,这可能会导致查询性能非常差。根据您所说的“数据也不总是这样”的确切含义,如果您可以编写一个表达式来解析 tbl2.uidy 值以提取 tbl1.cd 会更有效,因为您可以创建该表达式的基于函数的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2021-09-14
      • 1970-01-01
      相关资源
      最近更新 更多