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

MySQL如何查询字段中按顺序包含指定字符串的记录

MySQL查询语句编写方案

需求拆解

你需要同时满足3个查询条件:

  • route字段包含data2
  • route字段包含data7
  • data2在route中的出现顺序早于data7

基础实现方案

直接用MySQL内置的LOCATE()函数实现,该函数会返回子串在目标字符串中第一次出现的位置,子串不存在时返回0:

SELECT name, route
FROM 你的表名
WHERE 
  LOCATE('data2', route) > 0
  AND LOCATE('data7', route) > 0
  AND LOCATE('data2', route) < LOCATE('data7', route);

更严谨的防误匹配优化

如果你的业务中可能出现data22、data71这类类似子串的取值,为了避免部分匹配,我们可以给route前后拼接空格后再匹配带空格的子串,确保匹配的是完整的独立值:

SELECT name, route
FROM 你的表名
WHERE 
  LOCATE(' data2 ', CONCAT(' ', route, ' ')) > 0
  AND LOCATE(' data7 ', CONCAT(' ', route, ' ')) > 0
  AND LOCATE(' data2 ', CONCAT(' ', route, ' ')) < LOCATE(' data7 ', CONCAT(' ', route, ' '));

结果验证

以上语句执行后会返回符合要求的4条记录:A1、A3、A4、A5,自动排除顺序不符的A2,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:06