2010-03-23 58 views
0

我想知道是否有一種方法,使字母數字字符有偏好比符號的高位做一個ORDER BY時。MySQL的順序按符號偏好

I.E. 「A」來之前「(」

的方法有很多這一輪,但我更喜歡最優雅的分貝方法。

+2

我想,這就是所謂的「整理」。http://dev.mysql.com/doc/refman/5.1/en/charset-syntax.html – FrustratedWithFormsDesigner 2010-03-23 20:49:19

+1

秒。以下是如何定義自定義排序規則http://dev.mysql.com/doc/refman/5.1/en/adding-collat​​ion-sim PLE-8bit.html – user187291 2010-03-23 22:16:30

回答

0

這會給你所需的輸出。

SELECT <column_name> 
FROM <table_name> 
ORDER BY CASE 
      WHEN <column_name> REGEXP '^[a-z]' OR <column_name> REGEXP '^[A-Z]' THEN CONCAT('1',<column_name>) 
      WHEN <column_name> REGEXP '^[0-9]' THEN CONCAT('2',<column_name>) 
      ELSE CONCAT(3, <column_name>) 
     END; 

它首先會佔用字母,然後是數字,最後其它字符。