【问题标题】:Sort varchar column in mySql [duplicate]在mySql中对varchar列进行排序[重复]
【发布时间】:2015-12-18 06:56:46
【问题描述】:

我正在尝试对具有值的一列进行排序

FMOL1001,
FMOL1004,
FMOL1009,
FMOL10010,
FMOL1003,
FMOL10025

但排序不正确,请帮忙

【问题讨论】:

  • 你能定义“正确”吗?

标签: mysql sorting varchar


【解决方案1】:

试试这个,但我不确定... 如果你制作了这样的 FMOLXXXX-->>XXX 数字字符串,那么你可以对 XXX 进行排序:

SELECT column, SUBSTRING(column FROM 5) sort FROM table ORDER by CAST(sort AS UNSIGNED)

【讨论】:

    【解决方案2】:

    样本数据:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      相关资源
      最近更新 更多