2013-07-26 47 views

回答

5

可以在order by使用case語句:

order by (case when left(x, 1) between '0' and '9' then 0 else 1 end), 
     x desc 

編輯:

如果你想包含一個信在頂部字段:

order by (case when x like '%[a-zA-Z]%' then 0 else 1 end), 
     x desc; 

如果您想要只包含的字段頂部的字母:

order by (case when x not like '%[^a-zA-Z]%' then 0 else 1 end), 
     x desc; 

如果希望只底部包含數字字段:

​​
+0

我不這麼認爲。問題是關於包含字母的值。此答案處理以非數字字符開頭的值。 –

+0

@DanBracuk。 。 。沒有樣本數據,這個問題是不明確的。我修改了我的答案。 –

+0

我會假定MySQL支持修訂中的語法。我其實不知道。我已經取消了我的反對票。 –

0

另一個可能的選擇是ORDER BY LEFT('0' + x, 2) DESC。這將確保0 - 9爲零填充,從而使字符值01小於10

0
select * from Table1 order by 
CAST(x AS UNSIGNED),x; 

fiddle

相關問題