当数据集包含来自另一个数据集的字符串时,pl sql 返回行

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

我正在处理 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 || '%'
sql database oracle oracle-sqldeveloper
1个回答
0
投票

一切正常,只需更改条件“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 || '%'
© www.soinside.com 2019 - 2024. All rights reserved.