A表列有CSV数据,B表有正常行,会检查A表CSV列中的匹配记录。并显示匹配的字符串。
A table columnid-'XYZ,ABC,JKL,MNO'.
B table columnid: ABC
BHU
PQR
XYZ
Output: ABC
XYZ.
一个简单的
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;