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

如何用SQL高效定位含连续三个相同字母的字符串?

高效定位SQL表中含连续三个相同字母的字符串的方法

当然有更简洁高效的写法,核心是利用正则表达式替代冗长的OR条件,不同主流数据库的实现语法略有差异,下面分别举例:

MySQL/MariaDB

使用REGEXP(或RLIKE)操作符,正则表达式可直接匹配任意字母连续出现三次的情况。如果需要不区分大小写,可通过(?i)标记实现,或者结合UPPER()函数统一转换后匹配:

-- 支持(?i)标记的不区分大小写写法
SELECT * FROM your_table
WHERE your_field REGEXP '(?i)([a-z])\\1\\1';

-- 兼容所有版本的不区分大小写写法
SELECT * FROM your_table
WHERE UPPER(your_field) REGEXP '([A-Z])\\1\\1';

PostgreSQL

使用~*操作符实现不区分大小写的正则匹配,语法更简洁:

SELECT * FROM your_table
WHERE your_field ~* '([a-z])\1\1';

SQL Server

使用PATINDEX函数结合正则逻辑,基础写法如下:

SELECT * FROM your_table
WHERE PATINDEX('%([A-Z])\1\1%', UPPER(your_field)) > 0;

为什么这种写法更好?

  • 代码简洁易维护:无需编写26个重复的LIKE条件,修改匹配规则只需调整正则表达式即可
  • 性能更优:多数数据库对正则表达式的执行优化优于多个OR拼接的LIKE语句(注意:%xxx%前缀通配符无法利用字段索引,若要极致性能可考虑全文索引,但正则写法本身已比原写法高效)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:05:15