在SQL中需要按如下特定顺序排序包含字母和数字的列:
Copy code0057
0058
1
2
A1
A2
可以通过以下方式实现:
- 使用CASE WHEN对列进行检查
- 如果是以0开头的数字,转换为数字1排序
- 如果是字母,转换为较大数字999排序
- 其余正常转换为数字排序
- 最后在排序中包含原始列值
具体实现代码:
sqlCopy codeSELECT *
FROM mytable
ORDER BY
CAST(CASE WHEN col LIKE '0%' THEN 1
WHEN col REGEXP '[a-zA-Z]' THEN 999
ELSE col
END AS SIGNED),
col
这种方法可以灵活处理包含字母和数字的排序情况。
先根据条件转换为数字或字符排序,再结合原始值进行排序,可以实现按类别和原值的组合顺序进行排序。
标签:
Mysql