【问题标题】:Partial Match On Left Join (Oracle, SQL Query)左连接部分匹配(Oracle、SQL 查询)
【发布时间】:2021-06-29 18:59:47
【问题描述】:

有两个单独的 oracle 数据库表,我需要连接一个键(左连接到表 1)。 table1 在同一字段中有多个键的记录,如下例所示。

1303233,
1302246,
1303113 / 1339100 / 1303797,
1308897 / 1302818

Table2 每条记录只有一个键

1303233,
1302246,
1303113,
1339100,
etc...

如何通过“部分匹配”将 table1 连接到 table2?

【问题讨论】:

  • 请解释您所说的“部分匹配”是什么意思。为什么您的数据模型在一列中存储多个值?
  • 我不控制源的管理,而是需要确定如何链接数据。通过“部分匹配”,我的意思是通过列表中的每个键加入。因此,如果表 1 中有 3 个记录为一条记录,则它将与表 2 连接 3 次

标签: sql oracle


【解决方案1】:

您应该修复您的数据模型。多个值不应存储在单个字符串中。它们应该是联结/关联表中的单独行,或者可能是 JSON 数组或其他数据结构。

但是,你可以使用任何你喜欢的比较来加入,所以你可以使用:

select . . .
from table2 t2 left join
     table1 t1
     on ' / ' || t1.col || ' / ' like '% / ' || t1.col || ' / %'

但是,您应该努力修复数据模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 2020-08-12
    • 2019-08-27
    • 1970-01-01
    • 2021-12-25
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多