SQL SERVER 字符串按数字排序

需求是这样的:
数据库表里面有一个字段类型是nvachar,存的值是数字和字符混合的,要实现先按数字排序,再按字母倒序。

思路:
考虑这个字段的值是否是有规律可循的,把要按数字排序的部分转换为数字,再把剩下的字符排序。

数据表是下面这样的:

SQL SERVER 字符串按数字排序

LevelName就是那个数字和字母混合的字段。
我这个表里存的LevelName都是数字+单个字符的格式。于是可以把前面的部分转换为数字,按数字排,剩下的部分按字母排。

语句这样写:

SELECT * FROM dbo.Level
ORDER BY CONVERT(INT, LEFT(LevelName, LEN(LevelName)-1)) ASC, RIGHT(LevelName, 1) DESC

查询结果:

SQL SERVER 字符串按数字排序

PS:4B 比 4A 小。

上一篇:怪事年年有,今天特别多!org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'empno' not found. Available parameters are [emp, deptno, param1, param


下一篇:org.apache.ibatis.binding.BindingException: Parameter ‘brOrderNo’ not found. Available parameters ar