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
我有一个 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