如何对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
相关产品推荐
相关产品推荐

