mysql語句 字符字段,先數字後字母排序以及漢字排序。

第一個排序.字符型字段,有數字,有字母。

         現在對type_code字段進行排序,如下:

MYSQL語句進行排序:

SELECT *,  (type_code+0 > 0) boolNum 
FROM table 
ORDER BY boolNum DESC, (type_code+0), type_code;

效果如下:

具體原理我也不知道,反正網上抄了半天,抄到個可以用的。

第二個漢字排序:對如下BASE_RULE_NAME進行排序:

MYSQL語句,BASE_RULE_NAME(這個字段得注意修改成自己的):

SELECT *,lower(case when BASE_RULE_NAME REGEXP '^[a-zA-Z]' then LEFT(BASE_RULE_NAME, 1)
        when BASE_RULE_NAME REGEXP '^[0-9]' then LEFT(BASE_RULE_NAME, 1)
        else ELT(INTERVAL(CONV(HEX(LEFT(CONVERT(BASE_RULE_NAME USING gbk),1)),16,10),
                        0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
                        0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,
                        0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
                        'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P',
                        'Q','R','S','T','W','X','Y','Z') end) firstChar
        FROM table ORDER BY firstChar ASC,BASE_RULE_NAME ASC;

效果圖,按照第一個漢字的首字母排序的: