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

MySQL에서 문자열을 글자 수(문자 길이) 기준으로 정렬하는 방법

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 절과 함께 사용하면 별도의 추가 설정 없이도 손쉽게 문자열 길이 기준 정렬을 구현할 수 있습니다.