MySQL에서 Zerofill의 사용, 이점 및 대안
오늘 우리는 MySQL에서 ZEROFILL
속성의 사용, 이점 및 대안에 대해 교육을 받을 것입니다.
MySQL에서 ZEROFILL
속성의 사용 및 이점
ZEROFILL
속성을 사용하는 이점은 입력 및 데이터 저장소와 관련이 없지만 출력 값이 표시되는 방식에만 영향을 미친다는 것입니다. MySQL은 열 정의 중에 ZEROFILL
을 사용할 때 UNSIGNED
를 자동으로 추가합니다.
ZEROFILL
속성으로 열(속성)을 정의하여 테이블을 생성할 때마다 열 정의에 지정된 표시 너비까지 왼쪽에 0이 있는 열의 출력(결과 값)을 채웁니다.
예제 코드:
CREATE TABLE table_one (
column_one INT(8) ZEROFILL NOT NULL,
column_two INT(8) NOT NULL
);
INSERT INTO table_one (column_one, column_two) VALUES
(9, 9),
(98, 98),
(987, 987),
(987654321, 987654321);
SELECT column_one, column_two FROM table_one;
출력:
+------------+------------+
| column_one | column_two |
+------------+------------+
| 00000009 | 9 |
| 00000098 | 98 |
| 00000987 | 987 |
| 987654321 | 987654321 |
+------------+------------+
4 rows in set (0.00 sec)
column_one
속성의 너비가 8인 위의 예를 참조하십시오. 지정된 표시 너비보다 긴 값은 잘리지 않습니다.
위의 테이블 출력에서 마지막 레코드인 987654321
을 참조하십시오.
ZEROFILL
속성이 있는 정수 필드에 디스플레이 너비보다 큰 값을 저장한다고 가정합니다. MySQL이 복잡한 조인
을 위해 임시 테이블을 생성할 때 문제가 발생할 수 있습니다.
MySQL 서버는 데이터 값이 필드(열) 표시 너비에 맞는다고 가정합니다. UNION
쿼리 또는 식과 관련된 열은 ZEROFILL
속성을 무시합니다.
MySQL 8.0.17의 경우 ZEROFILL
속성은 숫자 데이터 유형에서 더 이상 사용되지 않습니다. 따라서 정수 데이터 유형의 표시 너비가 MySQL의 향후 버전에서 제거될 예정이므로 ZEROFILL
속성에 대한 지원을 기대해야 합니다.
MySQL에서 ZEROFILL
속성의 대체 기능
따라서 이러한 속성에 대해 동일한 효과를 생성하는 대안을 사용할 수 있습니다. 예를 들어, LPAD()
를 사용하여 디스플레이 너비까지 왼쪽에 0을 추가하거나 CHAR
필드에 형식이 지정된 숫자를 저장할 수 있습니다.
다음 코드 스니펫을 참조하십시오.
SELECT LPAD(column_one,8,0) FROM table_one;
출력:
+----------------------+
| LPAD(column_one,8,0) |
+----------------------+
| 00000009 |
| 00000098 |
| 00000987 |
| 98765432 |
+----------------------+
4 rows in set (0.001 sec)
LPAD()
를 사용하여 INT
유형 열의 왼쪽에 0을 채울 뿐만 아니라 다음과 같이 VARCHAR()
유형 값에도 사용합니다.
SELECT LPAD('Hello',8,'??') FROM table_one;
출력:
+----------------------+
| LPAD('Hello',8,'??') |
+----------------------+
| ???Hello |
| ???Hello |
| ???Hello |
| ???Hello |
+----------------------+
4 rows in set (0.00 sec)