SQL对字符进行排序(数字类的字符)

本文使用的是SQLserver数据库测试,其他数据库类似.

1.首先看下表结构,建表语法自行百度.

2.插入数据

默认排序是按ID进行排序的

select stu_id ,stu_name from student order by stu_id.

效果如上图,现在需要按姓名排序,姓名数据类型是字符,但里面的内容数字.

下来测试按姓名排序:

select stu_id ,stu_name from student order by stu_name.

效果如下图:

观察发现并不是按预想的格式从小到大排序,而是首位数字最小的在前面.

有人会说直接将name这个字段转换成数字,会发现是不行的.13行14行又不是纯数字,无法进行强制转换

博主这来测试了一个写法大家可以参考下.

select stu_id ,stu_name from student order by  right ('0000000000'+stu_name,10)

具体为何这样写,大家可以自行百度,实际效果如下图: