2

我有一个带有描述的表,它可以有多个单词,我需要与一组单词(一组单词是使用 LISTAGG 函数从另一个查询中输出)进行比较,以检查该单词是否存在于 Description 列中。

例如,如果我的描述有如下文本,并与单词 PIN 比较,则仅返回第 3,4 行。

  1. 运输项目
  2. 管道项目
  3. 夹紧销
  4. 主轴销
4

1 回答 1

1

您可以使用正则表达式。对于您的示例:

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。

于 2019-10-04T04:09:17.383 回答