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

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

MySQL에서 문자 수를 기준으로 데이터를 정렬하려면 ORDER BY 절과 LENGTH() 함수를 함께 사용하면 됩니다. LENGTH() 함수는 컬럼 값의 문자 수를 반환하며, 이를 ORDER BY 절에 적용하면 문자열 길이 순서대로 결과를 정렬할 수 있습니다.

기본 문법

다음은 문자 수를 기준으로 내림차순 정렬하는 기본 문법입니다.

SELECT * FROM yourTableName
ORDER BY LENGTH(yourColumnName) DESC;

DESC 키워드를 사용하면 긴 문자열부터 먼저 출력되고, ASC 또는 생략 시에는 짧은 문자열부터 오름차순으로 정렬됩니다.

예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE DemoTable
    -> (
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.50 sec)

데이터 삽입

INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.

mysql> INSERT INTO DemoTable values('John');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO DemoTable values('Robert');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT INTO DemoTable values('Bob');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO DemoTable values('David');
Query OK, 1 row affected (0.26 sec)

전체 레코드 조회

SELECT 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> SELECT * FROM DemoTable;

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

+--------+
| Name   |
+--------+
| John   |
| Robert |
| Bob    |
| David  |
+--------+
4 rows in set (0.00 sec)

문자 수 기준 정렬 쿼리 실행

이제 LENGTH() 함수를 활용하여 이름의 문자 수가 많은 순서대로 정렬하는 쿼리를 실행해 보겠습니다.

mysql> SELECT * FROM DemoTable
    -> ORDER BY LENGTH(Name) DESC;

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

+--------+
| Name   |
+--------+
| Robert |
| David  |
| John   |
| Bob    |
+--------+
4 rows in set (0.00 sec)

결과 분석

출력 결과를 보면 'Robert'(6자), 'David'(5자), 'John'(4자), 'Bob'(3자) 순으로 문자 수가 많은 순서대로 정렬된 것을 확인할 수 있습니다.

참고 사항

LENGTH() 함수는 바이트 단위로 길이를 계산하기 때문에 한글이나 특수문자 등 멀티바이트 문자가 포함된 경우 CHAR_LENGTH() 함수를 사용하는 것이 더 정확합니다. CHAR_LENGTH()는 바이트와 관계없이 실제 문자 수를 기준으로 길이를 반환합니다.