Chcę tylko wiedzieć, jakie są korzyści / zastosowanie definiowania ZEROFILL
dla INT
DataType w MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
mysql
types
unsigned-integer
diEcho
źródło
źródło
zerofill
jest to niestandardowe. " Atrybut jest ignorowany, gdy kolumna jest zaangażowany w wyrażeniach lub zapytaniami. Jeśli przechowywać wartości większych niż szerokość wyświetlacza w kolumnie całkowitą, która ma atrybut, mogą wystąpić problemy podczas MySQL generuje tabele tymczasowe dla niektórych skomplikowane łączy. W tych przypadkach , MySQL zakłada, że wartości danych mieszczą się w szerokości wyświetlania kolumny. ”ZEROFILL
UNION
ZEROFILL
Odpowiedzi:
Po wybraniu kolumny za pomocą typu
ZEROFILL
wypełnia on wyświetlaną wartość pola zerami do szerokości wyświetlania określonej w definicji kolumny. Wartości dłuższe niż szerokość wyświetlania nie są obcinane. Zauważ, że użycieZEROFILL
również implikujeUNSIGNED
.Używanie
ZEROFILL
i szerokość wyświetlania nie ma wpływu na sposób przechowywania danych. Wpływa tylko na sposób wyświetlania.Oto przykładowy SQL, który demonstruje użycie
ZEROFILL
:Wynik:
źródło
Jeden przykład, aby zrozumieć, gdzie użycie
ZEROFILL
może być interesujące:W Niemczech posiadamy 5-cyfrowe kody pocztowe. Jednak te kody mogą zaczynać się od zera, więc
80337
jest to prawidłowy kod pocztowy dla miasta,01067
to kod pocztowy Berlina.Jak widać, każdy obywatel Niemiec oczekuje, że kody pocztowe będą wyświetlane jako 5-cyfrowy kod, więc
1067
wygląda to dziwnie.Aby zapisać te dane, możesz użyć
VARCHAR(5)
lub,INT(5) ZEROFILL
podczas gdy liczba całkowita wypełniona zerami ma dwie duże zalety:1067
, nadal01067
wróciszByć może ten przykład pomoże zrozumieć użycie
ZEROFILL
.źródło
To funkcja dla niespokojnych osobowości, które lubią kwadratowe pudełka.
Wstawiasz
ale kiedy wybierzesz, wartości są wypełnione
źródło
Pomaga w poprawnym sortowaniu w przypadku, gdy będziesz musiał połączyć tę „liczbę całkowitą” z czymś innym (inną liczbą lub tekstem), co będzie wymagało posortowania jako „tekst”.
na przykład,
jeśli będziesz musiał użyć liczb całkowitych pól (powiedzmy 5) połączonych jako A-005 lub 10/0005
źródło
Wiem, że spóźniłem się na imprezę, ale uważam, że zerofill jest pomocny w logicznych reprezentacjach TINYINT (1). Null nie zawsze oznacza fałsz, czasami nie chcesz. Wypełniając smallint, skutecznie konwertujesz te wartości na INT i usuniesz wszelkie niejasności, które aplikacja może mieć podczas interakcji. Twoja aplikacja może wtedy traktować te wartości w sposób podobny do pierwotnego typu danych True = Not (0)
źródło
666
więc wolałbym zachować tę odpowiedź bez zmian;-)
źródło
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
źródło
Jeśli określisz ZEROFILL dla kolumny numerycznej, MySQL automatycznie doda atrybut UNSIGNED do kolumny.
Liczbowe typy danych, które zezwalają na atrybut UNSIGNED, umożliwiają również PODPISANIE. Jednak te typy danych są domyślnie podpisane, więc atrybut SIGNED nie ma znaczenia.
Powyższy opis pochodzi z oficjalnej strony MYSQL.
źródło
ZEROFILL
Zasadniczo oznacza to, że jeśli liczba całkowita 23 zostanie wstawiona do kolumny INT o szerokości 8, to reszta dostępnej pozycji zostanie automatycznie uzupełniona zerami.
W związku z tym
staje się:
źródło