MySQL에서 문자열 길이로 정렬하기
MySQL에서 문자열의 길이를 기준으로 데이터를 정렬하려면 ORDER BY LENGTH() 구문을 사용하면 됩니다. LENGTH() 함수는 문자열의 길이를 반환하며, 이를 ORDER BY 절과 함께 사용하면 원하는 순서대로 결과를 정렬할 수 있습니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table orderingAADemo -> ( -> Value varchar(100) -> ); Query OK, 0 rows affected (1.30 sec)
다음으로 INSERT 명령을 사용하여 테이블에 샘플 데이터를 삽입합니다.
mysql> insert into orderingAADemo values('A');
Query OK, 1 row affected (0.12 sec)
mysql> insert into orderingAADemo values('B');
Query OK, 1 row affected (0.13 sec)
mysql> insert into orderingAADemo values('AA');
Query OK, 1 row affected (0.20 sec)
mysql> insert into orderingAADemo values('C');
Query OK, 1 row affected (0.12 sec)
mysql> insert into orderingAADemo values('CCC');
Query OK, 1 row affected (0.22 sec)SELECT 명령을 실행하여 테이블에 저장된 레코드를 확인해 보겠습니다.
mysql> select *from orderingAADemo;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------+ | Value | +-------+ | A | | B | | AA | | C | | CCC | +-------+ 5 rows in set (0.00 sec)
문자열 길이를 기준으로 내림차순 정렬
이제 문자열 길이를 기준으로 내림차순(긴 문자열부터) 정렬하는 쿼리를 살펴보겠습니다. LENGTH(Value)를 기준으로 DESC 옵션을 적용하고, 길이가 같은 경우에는 Value 값을 기준으로 추가 정렬합니다.
mysql> select *from orderingAADemo -> order by length(Value) DESC, Value;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------+ | Value | +-------+ | CCC | | AA | | A | | B | | C | +-------+ 5 rows in set (0.00 sec)
결과를 보면 길이가 가장 긴 'CCC'가 먼저 출력되고, 그다음 'AA', 마지막으로 길이가 1인 'A', 'B', 'C'가 알파벳 순서로 정렬된 것을 확인할 수 있습니다. 오름차순 정렬을 원한다면 DESC 대신 ASC를 사용하거나 옵션을 생략하면 됩니다.