복붙노트

[SQL] ORDER BY는 먼저 숫자에 따라 알파벳

SQL

ORDER BY는 먼저 숫자에 따라 알파벳

MySQL의 순서에 약간의 비틀기를 찾고 나는, 나는 일반적으로 테이블에서 레코드를 선택하고 이름 (VARCHAR) ASC에 의해 기록을 주문하지만, 수는 항상 먼저 와서

여기에 내 질문의 일부 예 (참고. 처음 0-9로 레코드를 정렬 MYSQL)

SELECT name FROM list ORDER BY name ASC
record returned:
1 star
2 star
9 slice
Ape
Age
Beg
Bell
Fish
Zoo

내가 원하는 숫자에 따라 먼저 오는 알파벳 순서입니다

원하는 출력

Ape
Age
Beg
Bell
Fish
Zoo
1 star
2 star
9 slice

해결법

  1. ==============================

    1.BY 절 다음 순서를 사용 :

    BY 절 다음 순서를 사용 :

    ORDER BY IF(name RLIKE '^[a-z]', 1, 2), name
    
  2. ==============================

    2.이 Ref

    이 Ref

    SELECT name FROM list ORDER BY name * 1 ASC
    

    편집

    SELECT name FROM list ORDER BY name * 1, name ASC
    
  3. ==============================

    3.당신이 뭔가를 시도 할 수 있습니다 :

    당신이 뭔가를 시도 할 수 있습니다 :

    SELECT 
        name 
    FROM 
        list 
    ORDER BY 
        IF(name REGEXP '^[0-9]', CONCAT('zz',name),name) ASC
    

    그래서 이름이 숫자로 시작하는 경우 CONCATENATE 'ZZ'태초에 (그래서 마지막이 될 것입니다)

  4. ==============================

    4.이 시도..

    이 시도..

    그것은 당신의 답변을 얻을 수있는 간단한

    SELECT name  from list ORDER BY (name +0) ASC ,name ASC
    
  5. from https://stackoverflow.com/questions/17418215/order-by-alphabet-first-then-follow-by-number by cc-by-sa and MIT license