MySQL에서는 CHAR_LENGTH() 함수를 활용하면 문자열의 글자 수를 기준으로 데이터를 정렬할 수 있습니다. 이 함수는 문자열에 포함된 문자 개수를 반환하며, 예를 들어 아래 문자열의 경우 결과값은 4입니다.
AMIT
기본 문법
문자열을 글자 수 기준으로 정렬하려면 다음과 같은 형식의 쿼리를 사용합니다.
select *from yourTableName order by CHAR_LENGTH(yourColumnName);
예제 테이블 생성
개념을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table OrderByCharacterLength -> ( -> BookName varchar(200) -> ); Query OK, 0 rows affected (1.97 sec)
데이터 삽입
insert 명령어를 사용해 몇 개의 레코드를 삽입합니다. 쿼리는 다음과 같습니다.
mysql> insert into OrderByCharacterLength values('Let us C');
Query OK, 1 row affected (0.31 sec)
mysql> insert into OrderByCharacterLength values('Introduction to C');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OrderByCharacterLength values('Data Structure And Algorithm in Java ');
Query OK, 1 row affected (0.13 sec)
mysql> insert into OrderByCharacterLength values('C in Depth');
Query OK, 1 row affected (0.17 sec)
mysql> insert into OrderByCharacterLength values('Java Projects');
Query OK, 1 row affected (0.23 sec)전체 레코드 조회
테이블에 삽입된 순서대로 모든 레코드를 출력해 보겠습니다.
mysql> select *from OrderByCharacterLength;
출력 결과는 다음과 같습니다.
+---------------------------------------+ | BookName | +---------------------------------------+ | Let us C | | Introduction to C | | Data Structure And Algorithm in Java | | C in Depth | | Java Projects | +---------------------------------------+ 5 rows in set (0.00 sec)
글자 수 기준 정렬 결과 확인
이제 모든 레코드를 글자 수 기준으로 정렬하여 출력하는 쿼리입니다. 열 값의 길이가 가장 짧은 항목일수록 우선순위가 높아 먼저 표시됩니다.
mysql> select *from OrderByCharacterLength order by CHAR_LENGTH(BookName);
출력 결과는 다음과 같습니다.
+---------------------------------------+ | BookName | +---------------------------------------+ | Let us C | | C in Depth | | Java Projects | | Introduction to C | | Data Structure And Algorithm in Java | +---------------------------------------+ 5 rows in set (0.00 sec)
참고: 내림차순 정렬
반대로 글자 수가 많은 항목부터 표시하고 싶다면 쿼리 끝에 DESC 키워드를 추가하면 됩니다.
mysql> select *from OrderByCharacterLength order by CHAR_LENGTH(BookName) desc;
이처럼 CHAR_LENGTH() 함수를 ORDER BY 절과 함께 사용하면 별도의 추가 설정 없이도 손쉽게 문자열 길이 기준 정렬을 구현할 수 있습니다.