IT박스

MySQL에서 zerofill의 이점은 무엇입니까?

itboxs 2020. 6. 9. 22:20
반응형

MySQL에서 zerofill의 이점은 무엇입니까?


난 그냥 정의의 이익 / 사용 무엇을 알고 싶어 ZEROFILL위한 INT에서 데이터 형식은 MySQL?

`id` INT UNSIGNED ZEROFILL NOT NULL 

ZEROFILL 유형의 열을 선택하면 필드의 표시된 값을 열 정의에 지정된 표시 너비까지 0으로 채 웁니다. 표시 너비보다 긴 값은 잘리지 않습니다. ZEROFILL의 사용은 또한 UNSIGNED를 의미합니다.

ZEROFILL과 디스플레이 너비를 사용해도 데이터 저장 방법에는 영향을 미치지 않습니다. 표시 방법에만 영향을줍니다.

다음은 ZEROFILL 사용을 보여주는 SQL 예입니다.

CREATE TABLE yourtable (x INT(8) ZEROFILL NOT NULL, y INT(8) NOT NULL);
INSERT INTO yourtable (x,y) VALUES
(1, 1),
(12, 12),
(123, 123),
(123456789, 123456789);
SELECT x, y FROM yourtable;

결과:

        x          y
 00000001          1
 00000012         12
 00000123        123
123456789  123456789

ZEROFILL 사용법이 혼동 될 수있는 이해를 돕기위한 한 가지 예 :

독일에는 5 자리 우편 번호가 있습니다. 그러나 해당 코드는 0으로 시작할 수 있으므로 80337은 munic의 유효한 우편 번호이고 01067은 베를린의 우편 번호입니다.

보시다시피, 독일 시민은 우편 번호가 5 자리 코드로 표시되기를 기대하므로 1067은 이상하게 보입니다.

이러한 데이터를 저장하기 위해 VARCHAR (5) 또는 INT (5) ZEROFILL을 사용할 수 있지만 0으로 채워진 정수에는 두 가지 큰 장점이 있습니다.

  1. 하드 디스크의 적은 저장 공간
  2. 1067을 삽입해도 01067이 다시 나타납니다.

이 예는 ZEROFILL의 사용법을 이해하는 데 도움이 될 수 있습니다.


정사각형 상자를 좋아하는 혼란스러운 인물을위한 기능입니다.

당신은 삽입

1
23
123 

그러나 선택하면 값이 채워집니다.

000001
000023
000123

이 "정수"를 "텍스트"로 정렬해야하는 다른 항목 (다른 숫자 또는 텍스트)과 연결 해야하는 경우 올바른 정렬에 도움이됩니다 .

예를 들어

A-005 또는 10/0005로 연결된 정수 필드 번호 (5)를 사용해야하는 경우


나는 파티에 늦었다는 것을 알고 있지만 zerofill은 TINYINT (1)의 부울 표현에 도움이된다는 것을 알았습니다. 널이 항상 거짓을 의미하는 것은 아니며 때로는 원하지 않는 경우도 있습니다. tinyint를 0으로 채우면 해당 값을 INT로 효과적으로 변환하고 상호 작용시 발생할 수있는 혼란을 제거 할 수 있습니다. 그런 다음 응용 프로그램은 기본 데이터 유형 True = Not (0)과 유사한 방식으로 해당 값을 처리 할 수 ​​있습니다


mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)

선택적 (비표준) 속성 ZEROFILL과 함께 사용하면 공백의 기본 패딩이 0으로 바뀝니다. 예를 들어, INT (4) ZEROFILL로 선언 된 열의 경우 값 5는 0005로 검색됩니다.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html


If you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to the column.

Numeric data types that permit the UNSIGNED attribute also permit SIGNED. However, these data types are signed by default, so the SIGNED attribute has no effect.

Above description is taken from MYSQL official website.


ZEROFILL

This essentially means that if the integer value 23 is inserted into an INT column with the width of 8 then the rest of the available position will be automatically padded with zeros.

Hence

23

becomes:

00000023

참고URL : https://stackoverflow.com/questions/5256469/what-is-the-benefit-of-zerofill-in-mysql

반응형