ORDER BY SUBSTRING()을 사용하여 MySQL에서 문자열의 특정 부분을 기준으로 정렬할 수 있습니다. 먼저 테이블을 생성해 보겠습니다.
mysql> create table DemoTable (UserId varchar(200)); Query OK, 0 rows affected (0.68 sec)
다음은 insert 명령어를 사용하여 테이블에 레코드를 삽입하는 쿼리입니다.
mysql> insert into DemoTable values('USER_1234'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values('USER_John'); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable values('USER_Sam'); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values('USER_Carol'); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values('USER_Bob'); Query OK, 1 row affected (0.14 sec)
다음은 select 명령을 사용하여 테이블의 레코드를 표시하는 쿼리입니다.
mysql> select *from DemoTable;
그러면 다음과 같은 출력이 생성됩니다.
+------------+ | UserId | +------------+ | USER_1234 | | USER_John | | USER_Sam | | USER_Carol | | USER_Bob | +------------+ 5 rows in set (0.00 sec)
사례 1: 문자열의 일부를 오름차순으로 ORDER BY하려는 경우.
다음은 쿼리입니다. 여기에서는 문자열의 특정 부분을 4번째 문자 다음에 정렬합니다.
mysql> select *from DemoTable order by substring(UserId,4) asc;
그러면 다음과 같은 출력이 생성됩니다.
+------------+ | UserId | +------------+ | USER_1234 | | USER_Bob | | USER_Carol | | USER_John | | USER_Sam | +------------+ 5 rows in set (0.00 sec)
사례 2: 내림차순으로 문자열의 일부를 ORDER BY하려는 경우. 다음은 쿼리입니다.
mysql> select *from DemoTable order by substring(UserId,4) desc;
그러면 다음과 같은 출력이 생성됩니다. 여기에서는 문자열의 특정 부분을 4번째 문자 다음에 정렬합니다.
+------------+ | UserId | +------------+ | USER_Sam | | USER_John | | USER_Carol | | USER_Bob | | USER_1234 | +------------+ 5 rows in set (0.00 sec)