找到CSV格式的两个表之间的匹配记录

问题描述 投票:0回答:1

A表列有CSV数据,B表有正常行,会检查A表CSV列中的匹配记录。并显示匹配的字符串。

A table columnid-'XYZ,ABC,JKL,MNO'.
B table columnid: ABC
                  BHU
                  PQR
                  XYZ
Output: ABC
        XYZ.
oracle select subquery
1个回答
0
投票

一个简单的

inner join
就可以解决问题:

SELECT B.columnid
FROM A
INNER JOIN B On A.columnid like '%' || B.columnid || '%';

这是使用

connect by level
子句为我们的 csv 列中的每个值生成一行的另一种方法:

with cte as (
  select regexp_substr (
           columnid,
           '[^,]+',
           1,
           level
         ) columnid
  from   A
  connect by level <= length ( columnid ) - length ( replace ( columnid, ',' ) ) + 1
)
select C.columnid
from cte C
inner join B on B.columnid = C.columnid;

这里演示

© www.soinside.com 2019 - 2024. All rights reserved.