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

MySQL中如何从末尾反向匹配长度不定的逗号分隔数字字符串

逗号分隔数字序列反向后缀匹配方案

核心规则

  • 待匹配序列:固定长度20位,由0、1、2三种数字组成,格式为逗号分隔的字符串
  • 数据库存储序列:与待匹配序列格式一致,长度不固定
  • 匹配逻辑:从字符串末尾向前做反向完全匹配,即库中存储的序列,必须和待匹配序列末尾等长度的片段完全一致,才算匹配成功

匹配示例

待匹配20位序列:
'1,1,2,1,2,1,0,1,2,1,2,1,0,1,2,1,1,1,2,1'

库中存储序列清单:

  1. 编号1:'1,1,2,1'
  2. 编号2:'2,1,2,2,2,2'
  3. 编号3:'2,1'
  4. 编号4:'1,1,2,1,2,1'

预期匹配结果:仅返回编号为1、3的记录

实现参考(以MySQL场景为例)

核心思路是直接取待匹配序列末尾、与库中序列等长的子串做等值判断,不需要拆分字符串,执行效率高:

-- 预先将待匹配的20位序列赋值给变量
SET @target_seq = '1,1,2,1,2,1,0,1,2,1,2,1,0,1,2,1,1,1,2,1';

-- 查询匹配的记录
SELECT id, stored_seq FROM sequence_lib
WHERE RIGHT(@target_seq, CHAR_LENGTH(stored_seq)) = stored_seq;

注:该判断逻辑不会出现截断半段数字/逗号的误判:如果截取位置刚好落在元素中间,截取到的子串开头或结尾会出现多余逗号,和格式合法的库中序列不可能相等,无需额外做元素拆分校验。

示例匹配校验

  • 编号1的序列长度为7个字符(4个数字+3个逗号),待匹配序列末尾7个字符为1,1,2,1,完全相等,匹配成功
  • 编号2的序列长度为11个字符(6个数字+5个逗号),待匹配序列末尾11个字符为2,1,1,1,2,1,与存储序列不一致,匹配失败
  • 编号3的序列长度为3个字符(2个数字+1个逗号),待匹配序列末尾3个字符为2,1,完全相等,匹配成功
  • 编号4的序列长度为11个字符(6个数字+5个逗号),待匹配序列末尾11个字符为2,1,1,1,2,1,与存储序列不一致,匹配失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:21:55