난 그냥 정의의 이익 / 사용 무엇을 알고 싶어 ZEROFILL
위한 INT
에서 데이터 형식은 MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
난 그냥 정의의 이익 / 사용 무엇을 알고 싶어 ZEROFILL
위한 INT
에서 데이터 형식은 MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
답변:
유형 ZEROFILL
이 있는 열을 선택 하면 열 정의에 지정된 표시 너비까지 필드의 표시된 값을 0으로 채 웁니다. 표시 너비보다 긴 값은 잘리지 않습니다. 의 사용은 ZEROFILL
또한 의미합니다 UNSIGNED
.
사용 ZEROFILL
및 표시 너비는 데이터 저장 방법에 영향을 미치지 않습니다. 표시 방법에만 영향을줍니다.
다음은 사용법을 보여주는 SQL의 예입니다 ZEROFILL
.
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)
또는 0을 사용하는 INT(5) ZEROFILL
정수에는 두 가지 큰 장점이 있습니다.
1067
하면 여전히 01067
돌아옵니다.이 예는의 사용법을 이해하는 데 도움이 될 수 있습니다 ZEROFILL
.
정사각형 상자를 좋아하는 혼란스러운 인물을위한 기능입니다.
당신은 삽입
1
23
123
그러나 선택하면 값이 채워집니다.
000001
000023
000123
나는 파티에 늦었다는 것을 알고 있지만 zerofill은 TINYINT (1)의 부울 표현에 도움이된다는 것을 알았습니다. 널이 항상 거짓을 의미하는 것은 아니며 때로는 원하지 않는 경우도 있습니다. tinyint를 0으로 채우면 해당 값을 INT로 효과적으로 변환하고 상호 작용시 발생할 수있는 혼란을 제거 할 수 있습니다. 그런 다음 응용 프로그램은 기본 데이터 유형 True = Not (0)과 유사한 방식으로 해당 값을 처리 할 수 있습니다
666
그래서이 답변을 그대로 유지하고 싶습니다;-)
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로 검색됩니다.
zerofill
비표준 이라는 점에 유의해야합니다 . " 열이 표현식 또는 쿼리에 포함되면 속성이 무시됩니다 .ZEROFILL
속성이UNION
있는 정수 열에 표시 너비보다 큰 값을 저장ZEROFILL
하면 MySQL이 복잡한 조인을 위해 임시 테이블을 생성 할 때 문제가 발생할 수 있습니다. MySQL은 데이터 값이 열 표시 너비에 맞는 것으로 가정합니다. "