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

MySQL中如何精确筛选groups列中X0/X1后接C的记录?

问题描述

我有一张包含groups列的数据表,数据示例如下:

groups
X0C5TB24
X11C17N24
X1C14B25
X7C18B15
X0C88TB12
...

需要通过WHERE子句过滤出groups列中前缀为X0或X1且其后紧跟C的记录,期望结果如下:

groups
X0C5TB24
X1C14B25
X0C88TB12

尝试过以下两种写法,但均会误匹配到不符合要求的X11C17N24记录:

  1. 正则表达式写法:
WHERE
    groups REGEXP "^X[0-1]" 
  1. SUBSTR函数写法:
WHERE
    SUBSTR(groups, 1,2) IN ("X0","X1")

问题在于上述写法仅判断了开头的X0/X1,未限制其后必须紧跟C,导致X11开头的记录被错误匹配。

解决方案

方法1:修正正则表达式

明确要求X0/X1之后紧跟C,精准匹配目标模式:

WHERE
    groups REGEXP "^X[01]C"

说明:^匹配字符串起始位置,X[01]匹配X0或X1,C强制要求紧跟在X0/X1之后,彻底排除X11这类不符合的记录。

方法2:组合SUBSTR判断

同时校验前两位是X0/X1,且第三位为C:

WHERE
    SUBSTR(groups, 1, 2) IN ('X0', 'X1')
    AND SUBSTR(groups, 3, 1) = 'C'

说明:逻辑清晰直观,无需掌握正则语法也能理解。

方法3:LIKE通配符匹配

直接匹配固定前缀模式:

WHERE
    groups LIKE 'X0C%' OR groups LIKE 'X1C%'

说明:写法简单易懂,对于固定前缀的场景,数据库优化器通常能提供较好的查询效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:11:11