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

MySQL에서 따옴표를 무시하고 열 값을 정렬하는 쿼리 작성법

MySQL에서 따옴표를 무시하고 열 값 정렬하기

MySQL에서 문자열 데이터를 정렬할 때, 값에 포함된 따옴표 때문에 의도한 순서대로 정렬되지 않는 경우가 있습니다. 이런 문제를 해결하려면 ORDER BY 절과 TRIM() 함수를 함께 사용하면 됩니다.

TRIM(BOTH '"' FROM 컬럼명) 형태로 작성하면 정렬 기준에서 앞뒤의 큰따옴표를 제거한 값이 사용되므로, 따옴표 여부와 관계없이 자연스러운 알파벳 순서로 정렬할 수 있습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable784 (
   Message varchar(100)
);
Query OK, 0 rows affected (0.50 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다. 일부러 큰따옴표가 포함된 값도 넣어 보겠습니다.

mysql> insert into DemoTable784 values('Good');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable784 values('\"This is not a Message\"');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable784 values('Bye');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable784 values('Hello');
Query OK, 1 row affected (0.15 sec)

3. 전체 레코드 조회

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

mysql> select *from DemoTable784;

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

+-------------------------+
| Message |
+-------------------------+
| Good |
| "This is not a Message" |
| Bye |
| Hello |
+-------------------------+
4 rows in set (0.00 sec)

4. 따옴표를 무시하고 정렬하는 쿼리

이제 TRIM() 함수를 활용해 따옴표를 무시하고 열 값을 정렬하는 쿼리를 살펴보겠습니다.

mysql> select *from DemoTable784 order by trim(both '"' from Message);

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

+-------------------------+
| Message |
+-------------------------+
| Bye |
| Good |
| Hello |
| "This is not a Message" |
+-------------------------+
4 rows in set (0.00 sec)

결과 분석

정렬 결과를 보면 큰따옴표로 감싸진 "This is not a Message" 항목이 T에 해당하는 위치, 즉 'Good', 'Hello' 뒤에 올바르게 배치된 것을 확인할 수 있습니다.

만약 TRIM() 없이 단순히 ORDER BY Message로 정렬했다면, 큰따옴표(")의 ASCII 코드가 알파벳보다 앞서기 때문에 해당 행이 맨 위로 올라가 원하지 않는 순서가 되었을 것입니다.

정리

  • TRIM(BOTH '"' FROM 컬럼명)은 문자열 양쪽 끝의 큰따옴표를 제거합니다.
  • ORDER BY 절 안에서 함수를 사용하면 실제 저장된 값은 그대로 유지되면서 정렬 기준만 변경됩니다.
  • 작은따옴표를 제거하려면 TRIM(BOTH '\'' FROM 컬럼명)처럼 응용할 수 있습니다.

이처럼 TRIM() 함수를 활용하면 특수문자나 불필요한 공백의 영향을 받지 않고 데이터를 깔끔하게 정렬할 수 있습니다.