我有一个带有描述的表,它可以有多个单词,我需要与一组单词(一组单词是使用 LISTAGG 函数从另一个查询中输出)进行比较,以检查该单词是否存在于 Description 列中。
例如,如果我的描述有如下文本,并与单词 PIN 比较,则仅返回第 3,4 行。
- 运输项目
- 管道项目
- 夹紧销
- 主轴销
我有一个带有描述的表,它可以有多个单词,我需要与一组单词(一组单词是使用 LISTAGG 函数从另一个查询中输出)进行比较,以检查该单词是否存在于 Description 列中。
例如,如果我的描述有如下文本,并与单词 PIN 比较,则仅返回第 3,4 行。
您可以使用正则表达式。对于您的示例:
select *
from (select 'SHIPPING ITEM' as col from dual union all
select 'SPINDLE PIN' from dual
) x
where regexp_like(' ' || col || ' ', '\WPIN\W')
如果你有一个字符串比如'PIN,BALL'
被传入,你可以构造你想要的表达式:
where regexp_like(' ' || col || ' ',
'\W' || replace('PIN,BALL', ',', '\W|\W') || '\W'
)
这是一个 db<>fiddle。