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

Impala如何查询同时包含Hi、teo、code三个指定关键词的字段内容

Impala字段同时匹配多个关键词的正确实现

你原先的rlike 'Hi teo code'要求三个词严格按顺序连续出现,和需求不符;|、OR逻辑是「满足任意一个即可」,自然也得不到同时包含三个词的结果。

方案1:多AND条件匹配(推荐,可读性高、不易出错)

直接拆分每个关键词的匹配条件,用AND连接即可:

select *
from db.table
where 
  content rlike 'Hi'
  AND content rlike 'teo'
  AND content rlike 'code';

如果需要忽略大小写(比如示例中的Teo也需要匹配teo关键词),可以用regexp_like加不区分大小写参数:

select *
from db.table
where 
  regexp_like(content, 'Hi', 'i')
  AND regexp_like(content, 'teo', 'i')
  AND regexp_like(content, 'code', 'i');

方案2:单正则正向前瞻匹配

如果希望写在一个正则表达式里,可以用Impala适配的Java正则正向前瞻语法,确保三个词都存在:

select *
from db.table
where content rlike '(?=.*Hi)(?=.*teo)(?=.*code)';

忽略大小写的版本只需要在正则开头加(?i)修饰:

select *
from db.table
where content rlike '(?i)(?=.*Hi)(?=.*teo)(?=.*code)';

两种方案都可以匹配你给出的示例'Teo, Hi your pass is 123code'(忽略大小写场景)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:00:01