MYSQL에서 각 ENUM 값은 인덱스 번호와 연관되어 있다는 것을 알고 있습니다. ENUM 값을 정렬하는 기초는 색인 번호이기도 합니다. 또한 인덱스 번호는 열거형 멤버가 열 사양에 나열된 순서에 따라 다릅니다. 예를 들어 ENUM('GOOD', 'EXCELLENT') 열에서 'GOOD'는 'EXCELLENT'보다 먼저 정렬됩니다. 즉, 'GOOD'의 인덱스 번호는 '1'이고 'EXCELLENT'의 인덱스 번호는 '2'라고 말할 수 있습니다.
MySQL은 빈 문자열과 null 값을 ENUM에 저장할 수도 있습니다. 비어 있지 않은 문자열 앞에 빈 문자열을 정렬하고 빈 문자열 앞에 NULL을 정렬합니다. 따라서 정렬 순서는 다음과 같습니다 -
ENUM 값의 정렬 순서 |
1. NULL |
2. 빈 문자열 |
3. 비어 있지 않은 문자열 |
예시
이 예에는 ENUM 열 '등급'이 있는 '결과' 테이블이 있습니다. 이 테이블에는 다음 값이 있습니다.
mysql> Select * from Result; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 100 | Gaurav | GOOD | | 101 | Rahul | POOR | | 102 | Rahul | NULL | | 103 | Mohan | | +-----+--------+-------+ 4 rows in set (0.00 sec)
이제 ORDER BY 절을 사용한 후 MySQL은 정렬된 출력을 반환합니다. 인덱스 번호를 기준으로 출력이 정렬된 것을 볼 수 있습니다.
mysql> Select * from result order by grade; +-----+--------+-------+ | Id | Name | Grade | +-----+--------+-------+ | 102 | Rahul | NULL | | 103 | Mohan | | | 101 | Rahul | POOR | | 100 | Gaurav | GOOD | +-----+--------+-------+ 4 rows in set (0.00 sec)