MySQL에서 열 길이로 정렬하기
MySQL에서 열의 길이를 기준으로 데이터를 정렬하려면 ORDER BY LENGTH() 함수를 사용하면 됩니다. LENGTH() 함수는 문자열의 길이를 반환하며, 이를 ORDER BY 절과 함께 사용하면 짧은 문자열부터 긴 문자열 순으로(또는 DESC 키워드를 추가하면 반대로) 정렬할 수 있습니다.
실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 아래와 같이 테이블을 생성합니다.
mysql> create table DemoTable715 (UserMessage varchar(100)); Query OK, 0 rows affected (0.56 sec)
2단계: 레코드 삽입
INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다.
mysql> insert into DemoTable715 values('Aw');
Query OK, 1 row affected (0.49 sec)
mysql> insert into DemoTable715 values('Awe');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable715 values('A');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable715 values('Awes');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable715 values('Awesom');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable715 values('Awesome');
Query OK, 1 row affected (0.19 sec)3단계: 전체 레코드 조회
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable715;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-------------+ | UserMessage | +-------------+ | Aw | | Awe | | A | | Awes | | Awesom | | Awesome | +-------------+ 6 rows in set (0.00 sec)
현재 레코드는 삽입된 순서대로 저장되어 있으며, 특정 기준으로 정렬되어 있지 않습니다.
4단계: 열 길이를 기준으로 정렬
이제 LENGTH() 함수를 활용하여 UserMessage 열의 길이순으로 정렬하는 쿼리를 실행해 보겠습니다.
mysql> select *from DemoTable715 order by length(UserMessage);
실행 결과는 다음과 같습니다.
+-------------+ | UserMessage | +-------------+ | A | | Aw | | Awe | | Awes | | Awesom | | Awesome | +-------------+ 6 rows in set (0.00 sec)
추가 팁
기본적으로 ORDER BY LENGTH()는 오름차순(짧은 문자열부터)으로 정렬됩니다. 만약 긴 문자열부터 내림차순으로 정렬하고 싶다면 DESC 키워드를 추가하면 됩니다.
mysql> select *from DemoTable715 order by length(UserMessage) desc;
또한 한글처럼 멀티바이트 문자가 포함된 경우에는 CHAR_LENGTH() 함수를 사용하는 것이 좋습니다. LENGTH()는 바이트 수를 기준으로 계산하지만, CHAR_LENGTH()는 실제 문자 개수를 기준으로 계산하기 때문입니다.