Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL ENUM 값은 어떻게 정렬됩니까?


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)