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

MySQL에서 특정 단어를 무시하고 열 정렬하는 방법

개요

데이터베이스 작업을 하다 보면 특정 접두사나 불필요한 단어가 포함된 문자열을 정렬해야 하는 경우가 있습니다. 이 글에서는 MySQL에서 TRIM, REPLACE, LOWER 함수를 조합하여 특정 단어를 무시하고 열을 정렬하는 방법을 예제와 함께 알아보겠습니다.

1. 테이블 생성하기

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

mysql> create table DemoTable
-> (
-> Name text
-> );
Query OK, 0 rows affected (1.31 sec)

2. 레코드 삽입하기

insert 명령을 사용하여 테이블에 데이터를 입력합니다. 여기서는 정렬 시 무시해야 할 특정 단어인 "name"이 포함된 이름도 함께 삽입합니다.

mysql> insert into DemoTable values('John 7');
Query OK, 1 row affected (0.65 sec)

mysql> insert into DemoTable values('John 6');
Query OK, 1 row affected (0.42 sec)

mysql> insert into DemoTable values('John 9');
Query OK, 1 row affected (0.33 sec)

mysql> insert into DemoTable values('name John 3');
Query OK, 1 row affected (0.24 sec)

3. 전체 레코드 조회하기

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

mysql> select *from DemoTable;

출력 결과

위 쿼리는 다음과 같은 결과를 반환합니다.

+-------------+
| Name |
+-------------+
| John 7 |
| John 6 |
| John 9 |
| name John 3 |
+-------------+
4 rows in set (0.00 sec)

4. 특정 단어를 무시하고 정렬하기

다음은 열을 정렬할 때 특정 단어를 무시하는 쿼리입니다.

mysql> select *from DemoTable ORDER BY TRIM(REPLACE(LOWER(Name), 'name ', ''));

출력 결과

위 쿼리는 다음과 같은 결과를 반환합니다.

+-------------+
| Name |
+-------------+
| name John 3 |
| John 6 |
| John 7 |
| John 9 |
+-------------+
4 rows in set (0.00 sec)

쿼리 동작 원리

위 쿼리가 어떻게 작동하는지 각 함수별로 살펴보겠습니다.

  • LOWER(Name): Name 열의 값을 모두 소문자로 변환하여 대소문자 구분 없이 일관되게 처리합니다.
  • REPLACE(..., 'name ', ''): 변환된 문자열에서 "name "이라는 단어(공백 포함)를 빈 문자열로 치환하여 제거합니다.
  • TRIM(...): 치환 후 남아 있을 수 있는 앞뒤 공백을 제거합니다.

이렇게 처리된 값을 기준으로 ORDER BY가 정렬을 수행하기 때문에, 원본 데이터에는 그대로 "name"이라는 단어가 남아 있더라도 정렬 결과에는 영향을 주지 않습니다. 출력 결과에서 확인할 수 있듯이 "name John 3"은 숫자 3을 기준으로 정렬되어 가장 앞에 위치하게 됩니다.