在mySql中对varchar列进行排序

时间:2015-09-21 14:16:45

标签: mysql sorting varchar

我正在尝试对具有值

的列进行排序
FMOL1001,
FMOL1004,
FMOL1009,
FMOL10010,
FMOL1003,
FMOL10025

但它没有正确排序,请帮忙

2 个答案:

答案 0 :(得分:0)

示例数据:

id  name
-------------
1   FMOL1001
2   FMOL1004 
3   FMOL1009 
4   FMOL10010
5   FMOL1003 
6   FMOL10025

查询:

SELECT id, name
FROM table
ORDER BY LPAD(SUBSTR(name,5,LENGTH(name)-4),10,'0') ASC

输出:

id  name
-------------
1   FMOL1001
5   FMOL1003 
2   FMOL1004 
3   FMOL1009 
4   FMOL10010
6   FMOL10025

说明:

LPAD(SUBSTR(name,5,LENGTH(name)-4),10,'0')

将产生:

FMOL0000001001
FMOL0000001003 
FMOL0000001004 
FMOL0000001009 
FMOL0000010010
FMOL0000010025

答案 1 :(得分:0)

试试这个,但我不确定...... 如果您创建了一个类似于此FMOLXXXX - >> XXX的数字字符串,那么您可以对XXX进行排序:

SELECT列,SUBSTRING(列FROM 5)按表CAST排序FROM表ORDER(排序为AS UNSIGNED)