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

如何在MySQL中使用LIKE或正则表达式筛选指定品牌数据

筛选符合条件的品牌解决方案

方法一:使用多个LIKE条件组合

利用LIKE的通配符特性,组合条件确保同时满足「以H开头」「包含o」「包含r」三个要求:

SELECT DISTINCT brand 
FROM phones 
WHERE brand LIKE 'H%' 
  AND brand LIKE '%o%' 
  AND brand LIKE '%r%';

这个语句会精准筛选出Hydrogen和Honor,自动排除不含r的Huawei。

方法二:使用MySQL正则表达式(REGEXP)

如果需要更灵活的顺序匹配,可借助正则实现:

兼容所有MySQL版本的写法

SELECT DISTINCT brand 
FROM phones 
WHERE brand REGEXP '^H.*o.*r|^H.*r.*o';

^H指定以H开头,.*o.*r匹配o在r前的场景,.*r.*o匹配r在o前的场景,用|分隔两种情况,覆盖所有顺序可能性。

MySQL 8.0+简化写法(支持正向预查)

SELECT DISTINCT brand 
FROM phones 
WHERE brand REGEXP '^H(?=.*o)(?=.*r)';

(?=.*o)和(?=.*r)是正向预查,直接确保字符串中同时存在o和r,无需关心两者顺序,写法更简洁。

你之前语句的问题说明

  • 第一个语句select distinct brand from phones where brand like 'h%o%r';:要求o必须出现在r之前,但Hydrogen的拼写是H-y-d-r-o-g-e-n,r在o前面,因此不满足条件,仅返回Honor。
  • 第二个语句select distinct brand from phones where brand like 'h%(o|r)';:LIKE不支持|这类正则语法,这里的(o|r)会被当作普通字符处理,没有匹配的品牌,所以返回空集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:53:36