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

MySQL REGEXP下%word%等效及字符数限制正则写法咨询

MySQL REGEXP 不区分大小写正则匹配方案

第一个正则(等效SQL通配符%word%)验证

你当前尝试的写法'^[a-zA-Z]*word[a-zA-Z]*$'和%word%不等效,核心问题如下:

  • [a-zA-Z]*仅能匹配大小写英文字母,而SQL通配符%支持匹配任意字符(数字、符号、特殊字符等均包含),如果目标字符串包含非字母内容(例如word123、_word),该写法会匹配失败,但%word%可以正常命中。
  • 首尾的^、$锚定和前后的[a-zA-Z]*属于冗余逻辑,MySQL REGEXP默认是子串匹配规则,只要字符串任意位置命中模式就会返回真,不需要手动补全前后任意字符的匹配规则。

如果要实现和%word%完全等效的不区分大小写匹配,直接使用'word'作为REGEXP匹配模式即可,MySQL默认的*_ci后缀大小写不敏感排序规则下可以直接生效。

第二个正则(word前后缀字符均不足3个)实现

符合需求的匹配模式为'^.{0,2}word.{0,2}$',逻辑说明:

  • ^匹配字符串开头、$匹配字符串结尾,确保对整个字符串做长度校验
  • .{0,2}匹配0-2个任意字符,严格限制word前后的字符数最多为2个,任意一侧字符数达到3个及以上就无法命中

你的测试用例匹配结果如下:

  • words:前缀0个字符、后缀1个字符,匹配
  • swordfish:后缀4个字符,不匹配
  • theword:前缀3个字符,不匹配
  • mywordly:前缀2个字符、后缀2个字符,匹配
  • miswordeds:前缀3个字符,不匹配

使用示例SQL

-- 等效%word%的匹配
SELECT 1 WHERE 'SWORDFISH' REGEXP 'word';

-- 前后缀均不足3个字符的匹配
SELECT 1 WHERE 'mywordly' REGEXP '^.{0,2}word.{0,2}$';

如果你的字段使用大小写敏感的排序规则(后缀为_bin或_cs),只需要把模式中的word替换为[Ww][Oo][Rr][Dd],即可实现不区分大小写匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:04