본문 바로가기

개발

mysql 문자 속 숫자 기준으로 정렬하기

MYSQL에서 아래와 같이 문자와 숫자가 섞인 데이터를 정렬하는 방법입니다.

 


 

 

 

일반적인 order by 필드 asc 를 할 경우

 

숫자가 순차적으로 되는것이 아니고 아래 예제처럼 정렬이 되는데요.

 

select name from table  order by codename  asc;

 

+-------------------+
| name                    |
+-------------------+
| 1.면                      |
| 10.O                     |
| 11.마                    |
| 12.브                    |
| 2.린                      |
| 3.의                      |
| 4.계                      |
| 5.방                      |
| 6.커                      |
| 7.누                      |
| 8.패                      |
| 9.부                       |
+-------------------+

 

 

이것을 1,2,3,... 등 숫자 순으로 정렬하기 위해서는 order by 필드 *1 asc 로 정렬조건을 변경해주시면 됩니다.

 

정렬하고자 하는 필드 뒤에 *1 이 핵심이며 여러가지로 응용도 가능합니다.

 

select name from table  order by codename *1 asc;

 

+-------------------+
| codename          |
+-------------------+
| 1.면          |
| 2.린            |
| 3.의        |
| 4.계        |
| 5.방   |
| 6.커        |
| 7.누        |
| 8.패   |
| 9.부          |
| 10.O |
| 11.마     |
| 12.브     |
+-------------------+