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

MySQL LIKE查询未返回LAMO10这类两位数结果的问题求助

解决MySQL查询无法返回LAMO10类记录的问题

你的查询结果取不到LAMO10,核心原因是empcode为字符串类型,按字符串规则排序时会逐位比较字符:LAMO9的第5位是9,LAMO10的第5位是1,9的ASCII码大于1,因此LAMO9会排在LAMO10前面,LIMIT 1自然只会返回前者。

要让LAMO10作为最大记录被返回,需要提取empcode中的数字部分并转换为数值类型后排序,以下是几种可行方案:

方案1:固定前缀提取数字(适配前缀为固定4位的LAMO)

SELECT empcode 
FROM employee 
WHERE empcode LIKE 'LAMO%' 
ORDER BY CAST(SUBSTRING(empcode, 5) AS UNSIGNED) DESC 
LIMIT 1;

SUBSTRING(empcode, 5)会跳过前4位的LAMO,截取后续的数字部分,转换为无符号整数后按数值降序排序,此时LAMO10会排在LAMO9之前。

方案2:替换前缀提取数字(适配前缀固定但长度可能变化的场景)

SELECT empcode 
FROM employee 
WHERE empcode LIKE 'LAMO%' 
ORDER BY CAST(REPLACE(empcode, 'LAMO', '') AS UNSIGNED) DESC 
LIMIT 1;

用REPLACE直接移除LAMO前缀,将剩余内容转为数值排序,逻辑更直观。

方案3:正则提取数字(适配前缀不固定但结尾为数字的场景,需MySQL 8.0+版本支持)

SELECT empcode 
FROM employee 
WHERE empcode LIKE 'LAMO%' 
ORDER BY CAST(REGEXP_SUBSTR(empcode, '[0-9]+') AS UNSIGNED) DESC 
LIMIT 1;

通过正则表达式匹配empcode中的数字片段,转换为数值后排序,兼容性更强,即使前缀后续有调整也能适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:46:57