mysql 字母+数字 混合排序(A1、A2、A12、D1、D2、D12)

67 阅读1分钟

假设有name字段有这些数据(A1、A2、A12、D1、D2、D12)
预期排序结果(A1、A2、A12、D1、D2、D12)

使用常规的排序得到的是(A1、A12、A2、D1、D12、D2)

解决方案(将字母和数字拆开排序):
SELECT name FROM convoy ORDER BY SUBSTRING(name, 1, 1) ASC, CAST(SUBSTRING(name FROM 2) AS UNSIGNED) ASC;