我们常常在数据库中用字符串类型定义ID等类型。而又多以数字编号来做简单id,当遇到id排序问题时出现如下问题如:
id
———–
1
2
11
12
22
当我们检索简单排序时
SELECT ID FROM TESTTABLE order by ID
结果却成了这样:
1
11
12
2
22
因为没有找到相关MYSQL字符串数字转换成数字类型的函数(我记得在ORACLE中有(TO_NUMBLE())的方法实现),
所以想到用先排序长度,再排序大小
SELECT ID FROM TESTTABLE order by LENGTH(ID ),ID
结果就实现了排序效果
1
2
11
12
22
当然这只对无符号的不等长度的数字id进行排序,也可应用于带字母的不等长的id字符串排序。