SQL:如何检查字符串中是否存在关键字列表中的至少一个关键字

SQL: how to check if at least one keyword from a keyword list exists in a string

我有一个 table 具有以下架构,

id   data_string
1    I have a pen.
2    Monday is not good.
3    I love Friday.
...  ...

我还有一个关键词列表['pen', 'love', 'apple']

我想编写一个 SQL 脚本来查找 如果我的关键字列表中的任何关键字可以在 [=29= 的 data_string 列中找到].

我希望脚本的输出类似于

id   keyword_exist
1    true 
2    false
3    true
...  ...

这对 SQL 可行吗?

考虑以下

with keywords as (
  select ['pen', 'love', 'apple'] list
)
select t.*, regexp_contains(data_string, r'' || pattern) keyword_exist
from your_table t, 
( select array_to_string(list, '|') pattern
  from keywords
)

如果应用于您问题中的示例数据 - 输出为

这个有用吗?

SELECT ID, data_string,
    CASE WHEN data_string LIKE '% pen %' 
    OR data_string LIKE '% love %' 
    OR data_string LIKE '% apple %' THEN 'True'
    ELSE 'False' 
    END AS keyword_exist
FROM table_name