日常工作中,我们可能会碰见比较特殊的数据,比如数组和字母掺杂的情况,我们也要对他们进行排序,并且按照我们想要的方式排序下来:接下来我就要介绍的是我碰见的情况,并考虑如何优化的,因为是公司的数据,我就不贴图了,我把大致的类型弄出来,记录一下,以备将来用得上。
1、当前缀相同时,例如数据类似A1、A10、A2、A20、B2、B12(开头也不一定是字母,可以是字符串)
假如这一列名称是name_value,我们想要的结果是
A1、A2、A10、A20、B2、B12
如果是直接排序的话,是行不通的,所以我们需要处理一下,先对name_value排序,再对name_value的长度排序。
select name_value from table
order by name_value,length(name_value)
2、当遇到数据类似2A、45A、155A、1.25B、2.5B、10B、50B(此方法适用于尾部必须是字母)
假设这一列名称为name_value,首先先对尾字母排序 用substr函数,substr(name_value, -1)就截取出最后一个字母了对这个进行排序就行了。接着就想办法把这个字母干掉然后接着排序,用这个函数,当然要注意大小写,这个是区分大小写的r