You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle SQL中匹配字符串多词并拼接返回匹配结果

Oracle SQL提取反馈文本中匹配关键词并拼接

需求说明

我有以下关键词列表:紧急、令人失望、恼火、无法使用、升级处理、不满意。现有一张存储用户反馈的表feedback,表结构及数据如下:

语句ID文本内容
1这个令人失望的问题反复出现,请紧急处理
2对服务不满意,请升级处理此案例

需要用Oracle SQL查询,提取每条反馈里匹配上述列表的关键词,并用顿号分隔拼接成新列,最终结果格式如下:

语句ID文本内容匹配到的列表词汇
1这个令人失望的问题反复出现,请紧急处理令人失望、紧急
2对服务不满意,请升级处理此案例不满意、升级处理

实现SQL

WITH keyword_list AS (
    SELECT '紧急' AS keyword FROM DUAL UNION ALL
    SELECT '令人失望' FROM DUAL UNION ALL
    SELECT '恼火' FROM DUAL UNION ALL
    SELECT '无法使用' FROM DUAL UNION ALL
    SELECT '升级处理' FROM DUAL UNION ALL
    SELECT '不满意' FROM DUAL
)
SELECT 
    f.SentenceID AS 语句ID,
    f.Text AS 文本内容,
    LISTAGG(k.keyword, '、') WITHIN GROUP (ORDER BY k.keyword) AS 匹配到的列表词汇
FROM 
    feedback f
LEFT JOIN 
    keyword_list k ON REGEXP_LIKE(f.Text, '\m' || k.keyword || '\M', 'i')
GROUP BY 
    f.SentenceID, f.Text
ORDER BY 
    f.SentenceID;

关键说明

  • keyword_list:用WITH子句构建需要匹配的关键词集合。
  • REGEXP_LIKE:用正则表达式做整词匹配,\m和\M确保匹配完整单词,'i'参数忽略大小写(不需要的话可以去掉)。
  • LISTAGG:把匹配到的关键词按指定分隔符拼接成字符串。
  • LEFT JOIN:保证即使没有匹配到关键词的记录也会被查询出来,此时拼接列显示为NULL。

内容的提问来源于stack exchange,提问作者Chinu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:02:27