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

MySQL正则表达式测试:判断6位字符串特定奇数位置字符是否匹配

解决MySQL字符串匹配查询的方案

没问题,我来帮你搞定这个需求!我们可以利用MySQL的字符串截取函数和逻辑条件来实现你要的匹配规则。

核心需求拆解

我们需要筛选出长度为6的字符串,并且满足以下任意一个条件:

  • 第1位字符与第3位字符相同
  • 第1位字符与第5位字符相同
  • 第3位字符与第5位字符相同

基础查询语句(筛选符合条件的字符串)

假设你的表名为your_table,存储目标字符串的列名为target_str,查询语句如下:

SELECT target_str
FROM your_table
WHERE 
    -- 先确保字符串长度严格为6
    LENGTH(target_str) = 6
    -- 三个匹配条件满足其一即可
    AND (
        SUBSTRING(target_str, 1, 1) = SUBSTRING(target_str, 3, 1)
        OR SUBSTRING(target_str, 1, 1) = SUBSTRING(target_str, 5, 1)
        OR SUBSTRING(target_str, 3, 1) = SUBSTRING(target_str, 5, 1)
    );

代码解释

  • LENGTH(target_str) = 6:过滤掉长度不符合要求的字符串,避免无效判断
  • SUBSTRING(target_str, pos, 1):MySQL中用于截取单个字符的函数,pos是起始位置(注意MySQL字符串位置从1开始计数),最后一个参数1表示只截取1个字符
  • 三个OR连接的条件:对应你要求的三种匹配规则,只要满足其中一个就会被筛选出来

返回布尔值的扩展查询(标记每条记录是否匹配)

如果你需要给每条记录直接返回true/false的匹配结果(和你给出的示例格式一致),可以用CASE语句实现:

SELECT 
    target_str,
    CASE
        WHEN LENGTH(target_str) != 6 THEN FALSE
        WHEN SUBSTRING(target_str, 1, 1) = SUBSTRING(target_str, 3, 1) THEN TRUE
        WHEN SUBSTRING(target_str, 1, 1) = SUBSTRING(target_str, 5, 1) THEN TRUE
        WHEN SUBSTRING(target_str, 3, 1) = SUBSTRING(target_str, 5, 1) THEN TRUE
        ELSE FALSE
    END AS is_match
FROM your_table;

用这个查询测试你给出的示例:

  • aabbcc → false
  • abbcad → true
  • aaabcd → true
  • bacada → false
  • 1a1b33 → true
    完全符合你的预期结果!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:13:11