2014-01-08 28 views
0

id列具有這些值:2,10,X,Y,d,GMYSQL-排序varchar列包括數字和焦炭

我要排序是這樣的:2,10,d,G,X, Ÿ

我嘗試了許多解決方案,並且結果是這裏

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

  1. 爲了通過標識* 1;

    排序的結果:g^X Y d 2 10

  2. 爲了通過LPAD(ID,20, '0');

    排序結果:2 dģX Y 10

  3. 爲了通過CASE WHEN ID REGEXP '^ [0-9] + $' THEN ID * 1,否則999999 END;

    排序結果:2 10個G X Y d

+0

我認爲這是更好的方法來從中間件(PHP)的語言排序。 – gogagubi

回答

1

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

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