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

MySQL에서 숫자 열을 오름차순(ASC)으로 정렬하는 방법 – CAST() 함수 활용

MySQL에서 숫자 열을 올바르게 오름차순(ASC)으로 정렬하려면 CAST() 함수를 활용하면 됩니다. 특히 숫자가 문자열(VARCHAR)로 저장된 경우 일반적인 ORDER BY 절은 사전순으로 정렬되어 '100'이 '11'보다 앞에 오는 문제가 발생할 수 있는데, CAST()로 값을 정수형으로 변환하면 이러한 문제를 해결할 수 있습니다.

실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Score int
    );
Query OK, 0 rows affected (0.72 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable(Score) values(10);
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable(Score) values(100);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Score) values(11);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Score) values(97);
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable(Score) values(78);
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(Score) values(89);
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 조회하기

SELECT 문으로 테이블의 모든 데이터를 확인해 보겠습니다.

mysql> select *from DemoTable;

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

+----+-------+
| Id | Score |
+----+-------+
| 1  | 10    |
| 2  | 100   |
| 3  | 11    |
| 4  | 97    |
| 5  | 78    |
| 6  | 89    |
+----+-------+
6 rows in set (0.00 sec)

4. CAST() 함수로 오름차순 정렬하기

다음은 숫자 열을 오름차순으로 정렬하는 쿼리입니다. CAST() 함수를 사용해 Score 열을 SIGNED INTEGER(부호 있는 정수)로 변환한 뒤 정렬하는 것이 핵심입니다.

mysql> select *from DemoTable order by cast(Score AS SIGNED INTEGER) ASC;

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

+----+-------+
| Id | Score |
+----+-------+
| 1  | 10    |
| 3  | 11    |
| 5  | 78    |
| 6  | 89    |
| 4  | 97    |
| 2  | 100   |
+----+-------+
6 rows in set (0.00 sec)

출력 결과를 보면 숫자 값이 10 → 11 → 78 → 89 → 97 → 100 순서로 올바르게 정렬된 것을 확인할 수 있습니다. 이처럼 CAST() 함수를 ORDER BY 절과 함께 사용하면 문자열로 저장된 숫자 데이터도 정확한 수치 기준으로 정렬할 수 있습니다.