MYSQL排序varchar列包括number和char

时间:2014-01-08 12:45:12

标签: mysql sorting columnsorting

id列具有以下值:2,10,X,Y,D,G

我想这样排序:2,10,D,G,X,Y

我尝试了很多解决方案,结果就在这里

http://sqlfiddle.com/#!2/846ed/1

  1. 按id * 1排序;

    排序结果:G X Y D 2 10

  2. LPAD订购(id,20,'0');

    排序结果:2 D G X Y 10

  3. 按CASE WHEN命令REGEXP'^ [0-9] + $'THEN id * 1 else 999999 END;

    排序结果:2 10 G X Y D

1 个答案:

答案 0 :(得分:1)

您需要使用不同的排序值:

  SELECT id 
    FROM test
ORDER BY (case when id REGEXP('(^[0-9]+$)') then 0 else 1 end), 
         cast(id as unsigned), 
         id