Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 값의 일부를 기준으로 열 데이터 정렬하는 방법

MySQL에서 문자열 값의 일부(예: 접두사를 제외한 숫자 부분)를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때 ORDER BY 절과 RIGHT() 함수를 함께 사용하면 간단하게 해결할 수 있습니다.

RIGHT() 함수란?

RIGHT() 함수는 문자열의 오른쪽부터 지정한 길이만큼의 문자를 반환합니다. 예를 들어 'User1234'라는 값에서 RIGHT(UserId, 4)를 적용하면 '1234'가 반환되며, 이 값을 기준으로 정렬할 수 있습니다.

1. 샘플 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    (
    UserId varchar(100)
    );
Query OK, 0 rows affected (0.33 sec)

2. 레코드 삽입하기

INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('User1234');
Query OK, 1 row affected (0.07 sec)

mysql> insert into DemoTable values('User9874');
Query OK, 1 row affected (0.06 sec)

mysql> insert into DemoTable values('User9994');
Query OK, 1 row affected (0.04 sec)

mysql> insert into DemoTable values('User1211');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('User1012');
Query OK, 1 row affected (0.79 sec)

3. 전체 레코드 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----------+
| UserId   |
+----------+
| User1234 |
| User9874 |
| User9994 |
| User1211 |
| User1012 |
+----------+
5 rows in set (0.00 sec)

4. 값의 일부를 기준으로 정렬하기

오름차순 정렬 (Case 1)

결과를 오름차순으로 정렬하려면 아래와 같이 RIGHT() 함수와 ORDER BY 절을 사용합니다.

mysql> select *from DemoTable ORDER BY RIGHT(UserId, 4);

실행 결과는 다음과 같습니다.

+----------+
| UserId   |
+----------+
| User1012 |
| User1211 |
| User1234 |
| User9874 |
| User9994 |
+----------+
5 rows in set (0.00 sec)

'User' 뒤의 숫자 부분을 기준으로 오름차순 정렬된 것을 확인할 수 있습니다.

내림차순 정렬 (Case 2)

결과를 내림차순으로 정렬하려면 DESC 키워드를 추가하면 됩니다.

mysql> select *from DemoTable ORDER BY RIGHT(UserId, 4) DESC;

실행 결과는 다음과 같습니다.

+----------+
| UserId   |
+----------+
| User9994 |
| User9874 |
| User1234 |
| User1211 |
| User1012 |
+----------+
5 rows in set (0.00 sec)

정리

이처럼 RIGHT() 함수를 활용하면 문자열 값의 특정 부분만 추출하여 정렬할 수 있습니다. 참고로 LEFT(), SUBSTRING(), SUBSTRING_INDEX() 등의 함수도 함께 활용하면 접두사, 중간 부분 등 다양한 위치의 값을 기준으로 유연하게 정렬할 수 있으니 상황에 맞게 선택해서 사용하시기 바랍니다.