如何将列数据与另一个表中的另一列匹配

时间:2014-12-29 06:49:30

标签: oracle

我有一个名为 txn_detail 的表,其主键为 txn_id ,而一个名为 hlr_pre_qt 的高级队列表的主键为<在名为 user_data 的列中包含strong> txn_detail ,其他几个值以逗号分隔。我需要过滤它们并使用这两列(txn_detail.txn_id和hlr_pre_qt.user_data)在两个表之间进行映射。我怎么能这样做?

txn_detail table

hlr_pre_qt queue table

1 个答案:

答案 0 :(得分:0)

您可以使用like来进行连接 即。

SELECT *
FROM txn_detail A
    JOIN hlr_pre_qt B on B.user_data.txn_id = A.txn_id

OR

SELECT *
FROM txn_detail A
    JOIN hlr_pre_qt B on b.USER_DATA LIKE '%' || TO_CHAR(A.txn_id) || '%'

OR

您可以从user_data ....

中删除TXN_ID
SELECT *
FROM txn_detail A
    JOIN hlr_pre_qt B on 
        SUBSTR(b.USER_DATA, INSTR(b.USER_DATA, '(') +1, INSTR(b.USER_DATA, ',') - INSTR(b.USER_DATA, '(') - 1) = TO_CHAR(A.txn_id)

在这两种情况下,都不会使用索引来进行连接,因此性能会很差。

希望有所帮助