Eu só quero saber qual é o benefício / uso da definição ZEROFILL
para INT
DataType no MySQL
?
`id` INT UNSIGNED ZEROFILL NOT NULL
mysql
types
unsigned-integer
diEcho
fonte
fonte
zerofill
não é padrão. " OZEROFILL
atributo é ignorado quando uma coluna está envolvida em expressões ouUNION
consultas. Se você armazenar valores maiores que a largura de exibição em uma coluna inteira que possui oZEROFILL
atributo, poderá ter problemas quando o MySQL gerar tabelas temporárias para algumas associações complicadas. Nesses casos , MySQL assume que os valores de dados encaixar dentro da largura de exibição da coluna. "Respostas:
Quando você seleciona uma coluna com o tipo,
ZEROFILL
ela preenche o valor exibido do campo com zeros até a largura de exibição especificada na definição da coluna. Valores maiores que a largura da exibição não são truncados. Observe que o uso deZEROFILL
também implicaUNSIGNED
.O uso
ZEROFILL
e a largura de exibição não afetam como os dados são armazenados. Afeta apenas como é exibida.Aqui está um exemplo de SQL que demonstra o uso de
ZEROFILL
:Resultado:
fonte
Um exemplo para entender, onde o uso de
ZEROFILL
pode ser interessante:Na Alemanha, temos códigos postais de 5 dígitos. No entanto, esses códigos podem começar com um zero, assim
80337
como um CEP válido para munic,01067
é um CEP de Berlim.Como você vê, qualquer cidadão alemão espera que os códigos postais sejam exibidos como um código de 5 dígitos, então isso
1067
parece estranho.Para armazenar esses dados, você pode usar um
VARCHAR(5)
ouINT(5) ZEROFILL
enquanto o inteiro preenchido com zerar tem duas grandes vantagens:1067
, você ainda01067
voltaTalvez este exemplo ajude a entender o uso de
ZEROFILL
.fonte
É um recurso para personalidades perturbadas que gostam de caixas quadradas.
Você insere
mas quando você seleciona, ele preenche os valores
fonte
Ajuda na classificação correta no caso em que você precisará concatenar esse "número inteiro" com outra coisa (outro número ou texto) que precisará ser classificada como "texto".
por exemplo,
se você precisar usar os números dos campos inteiros (digamos 5) concatenados como A-005 ou 10/0005
fonte
Sei que estou atrasado para a festa, mas acho que o zerofill é útil para representações booleanas de TINYINT (1). Nulo nem sempre significa Falso, às vezes você não quer. Ao preencher um minúsculo, você efetivamente converte esses valores em INT e remove qualquer confusão que seu aplicativo possa ter durante a interação. Seu aplicativo pode tratar esses valores de maneira semelhante ao tipo de dados primitivo True = Not (0)
fonte
666
que eu prefiro manter esta resposta como for;-)
fonte
http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
fonte
Se você especificar ZEROFILL para uma coluna numérica, o MySQL adicionará automaticamente o atributo UNSIGNED à coluna.
Os tipos de dados numéricos que permitem o atributo UNSIGNED também permitem SIGNED. No entanto, esses tipos de dados são assinados por padrão, portanto, o atributo SIGNED não tem efeito.
A descrição acima é retirada do site oficial do MYSQL.
fonte
PREENCHIMENTO ZERO
Isto significa essencialmente que, se o valor inteiro 23 for inserido em uma coluna INT com a largura de 8, o restante da posição disponível será preenchido automaticamente com zeros.
Conseqüentemente
torna-se:
fonte