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

如何修改SQL LIKE查询,限制new_model_01后的数字位数为3位?

解决方法:精准匹配指定格式的型号名称

嘿,这个问题很好解决,咱们核心就是要把匹配条件从“以new_model_01开头”收紧到“new_model_01后面严格跟着1-3位数字,且没有其他多余字符”。下面分几种常用数据库给你具体方案:

1. MySQL/MariaDB 方案

直接用正则匹配最方便,MySQL支持REGEXP(或RLIKE)操作符,精准限定字符串结构:

SELECT model_name FROM models_table 
WHERE model_name REGEXP '^new_model_01[0-9]{1,3}$';

解释:

  • ^ 匹配字符串开头,确保前缀是new_model_01
  • [0-9]{1,3} 匹配1到3位数字
  • $ 匹配字符串结尾,确保后面没有多余字符

2. PostgreSQL 方案

PostgreSQL用~操作符支持正则,写法和MySQL类似:

SELECT model_name FROM models_table 
WHERE model_name ~ '^new_model_01[0-9]{1,3}$';

或者也可以用SIMILAR TO语法(兼容性稍差但更贴近SQL标准):

SELECT model_name FROM models_table 
WHERE model_name SIMILAR TO 'new_model_01[0-9]{1,3}';

3. SQL Server 方案

SQL Server的LIKE不支持数量限定,所以有两种思路:

思路一:组合LIKE匹配不同长度

直接枚举1-3位数字的情况:

SELECT model_name FROM models_table 
WHERE model_name LIKE 'new_model_01[0-9]'
   OR model_name LIKE 'new_model_01[0-9][0-9]'
   OR model_name LIKE 'new_model_01[0-9][0-9][0-9]';

思路二:长度校验+数字校验

如果觉得枚举麻烦,也可以通过长度判断+排除非数字字符来实现:

SELECT model_name FROM models_table 
WHERE model_name LIKE 'new_model_01%'
  AND LEN(model_name) BETWEEN 12 AND 14 -- 'new_model_01'是11位,加1-3位数字后总长度12-14
  AND model_name NOT LIKE 'new_model_01%[^0-9]%'; -- 确保后面全是数字

如果是SQL Server 2017及以上版本,也可以用PATINDEX支持正则:

SELECT model_name FROM models_table 
WHERE PATINDEX('^new_model_01[0-9]{1,3}$', model_name) > 0;

额外提示

如果你的型号名称里new_model_01后面可能有其他非数字字符(比如字母),正则方案会自动排除这些情况,比单纯的长度判断更可靠哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:08:12