我正在处理 2 个数据集,当其中一个数据集的列包含另一个数据集的文本时,我想返回结果。所有数据类型均为 NVARCHAR2、Oracle SQL Developer 21.4.1.349、Oracle Database 19c 企业版版本 19.0.0.0.0
房屋规则: 我必须使用 CTE 我不能使用子查询(子选择\派生查询) 我不能使用光标
所以数据看起来像这样,数据集 A 和 B 之间没有公共列:
第一栏 | 第2栏 |
---|---|
PO4147 | 价值2 |
第一栏 | 第2栏 |
---|---|
PO4147PO4148 | 价值2 |
当 DATA_SET_B.COLUMN1 中某处包含 DATA_SET_A.COLUMN1 中的值时,我想返回 DATA_SET_B 中的行
我整个早上都在尝试,最新的尝试看起来像这样但不起作用:
with DATA_SET_A as (select COLUMN1, COLUMN2
from TABLE1)
,DATA_SET_B as (select COLUMN1, COLUMN2
from TABLE2)
select b.COLUMN1, b.COLUMN2
from DATA_SET_A a, DATA_SET_B b
where 1=1
and b.COLUMN1 like '%' || a.COLUMN1 || '%'
一切正常,只需更改条件“where”
a.COLUMN1 like '%' || b.COLUMN1 || '%'
于 b.COLUMN1 like '%' || a.COLUMN1 || '%'
with DATA_SET_A as (select 'PO4147' COLUMN1, 'val2' COLUMN2
from dual)
,DATA_SET_B as (select 'PO4147PO4148' COLUMN1, 'val2' COLUMN2
from dual)
select b.COLUMN1, b.COLUMN2
from DATA_SET_A a, DATA_SET_B b
where 1=1
and b.COLUMN1 like '%' || a.COLUMN1 || '%'