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

MySQL에서 문자와 기호가 포함된 값을 사용자 지정 순서로 정렬하는 방법

MySQL FIELD() 함수를 활용한 사용자 지정 정렬

MySQL에서 데이터를 알파벳순이나 숫자순이 아닌 원하는 순서대로 정렬해야 하는 경우가 종종 있습니다. 특히 문자와 기호가 섞여 있는 값들을 다룰 때는 일반적인 ORDER BY 절만으로는 원하는 결과를 얻기 어렵습니다. 이럴 때 유용하게 사용할 수 있는 것이 바로 ORDER BY FIELD() 함수입니다.

FIELD() 함수는 첫 번째 인자로 전달된 값이 뒤따르는 인자 목록 중 몇 번째 위치에 해당하는지를 반환합니다. 이 특성을 활용하면 열의 값을 개발자가 직접 지정한 순서대로 정렬할 수 있습니다.

1. 테이블 생성하기

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

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

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 문자와 기호가 포함된 값들을 입력합니다.

mysql> insert into DemoTable values('Java_1+');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('MySQL_23+');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('MongoDB++');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('C++_23');
Query OK, 1 row affected (0.13 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+-----------+
| Title     |
+-----------+
| Java_1+   |
| MySQL_23+ |
| MongoDB++ |
| C++_23    |
+-----------+
4 rows in set (0.00 sec)

현재 데이터는 삽입한 순서 그대로 저장되어 있는 것을 확인할 수 있습니다.

4. FIELD() 함수로 사용자 지정 순서 정렬하기

이제 문자와 기호가 포함된 값들을 원하는 순서대로 정렬하는 쿼리를 살펴보겠습니다. FIELD() 함수 안에 정렬하고 싶은 순서대로 값을 나열하면 됩니다.

mysql> select *from DemoTable order by field(Title,'MySQL_23+','C++_23','Java_1+','MongoDB++');

위 쿼리의 실행 결과는 다음과 같습니다.

+-----------+
| Title     |
+-----------+
| MySQL_23+ |
| C++_23    |
| Java_1+   |
| MongoDB++ |
+-----------+
4 rows in set (0.00 sec)

정리

ORDER BY FIELD()를 사용하면 'MySQL_23+' → 'C++_23' → 'Java_1+' → 'MongoDB++'처럼 임의로 지정한 순서대로 결과가 정렬됩니다. 참고로 FIELD() 목록에 없는 값은 반환값이 0이 되어 가장 앞쪽에 정렬되므로, 목록에 없는 데이터가 있을 가능성이 있다면 이 점을 함께 고려하는 것이 좋습니다. 이 방법은 상태값, 우선순위, 카테고리 등 고정된 순서로 정렬해야 하는 실무 시나리오에서 매우 유용하게 활용됩니다.