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

如何对MySQL中含VARCHAR+数字的列进行降序排序?

MySQL字符串列按数字部分降序排序的解决方案

问题场景

现有MySQL某列的字符串值如下:

REST_API_6007
REST_API_6
REST_API_4006
REST_API_4000
REST_API_3000
REST_API_3
REST_API_2
REST_API_1

需要实现按数字部分的数值大小降序排序,最终结果如下:

REST_API_6007
REST_API_4006
REST_API_4000
REST_API_3000
REST_API_6
REST_API_3
REST_API_2
REST_API_1

解决方案

通过提取字符串中的数字部分并转换为数值类型,即可实现按数值大小的降序排序。对应的MySQL查询语句如下:

SELECT your_column_name
FROM your_table_name
ORDER BY CAST(SUBSTRING_INDEX(your_column_name, '_', -1) AS UNSIGNED) DESC;

语句说明

  • SUBSTRING_INDEX(your_column_name, '_', -1):提取目标字符串中最后一个下划线_之后的部分,也就是我们需要的数字字符串。
  • CAST(... AS UNSIGNED):将提取到的数字字符串转换为无符号整数类型,确保排序时按数值大小比较,而非字符串字典序。
  • ORDER BY ... DESC:按转换后的数值进行降序排序,得到预期结果。

内容的提问来源于stack exchange,提问作者Kakarla Veera Shankara Ravindr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:55:30