Compreendendo a transformação de colunas numéricas no MySQL
O MySQL geralmente transforma números inteiros longos em valores inesperados quando inseridos em colunas mais curtas. Em vez de truncar, o MySQL ajusta o valor armazenado. Esse comportamento é atribuído ao mecanismo de overflow de inteiro.
Por exemplo, considere uma coluna chamada some_number com comprimento 10. Quando um número que excede esse comprimento (por exemplo, 715988985123857) é inserido, ele é transformado em 2147483647.
O mecanismo de overflow
De acordo com a documentação do MySQL, o overflow de número inteiro ocorre quando o resultado de um cálculo excede o valor máximo permitido para o tipo de dados. Nesse caso, o valor máximo para um número inteiro de 10 bits é 2147483647.
Fórmula para resultado calculado
A transformação segue uma fórmula específica:
Result = Number % (2^Bits) - 1
onde:
Em nosso exemplo, Número é 715988985123857 e Bits é 10, resultando em:
2147483647
BigInt vs. &&&]Para evitar estouro de número inteiro, use um tipo de dados bigint para números inteiros maiores. BigInt pode armazenar valores de até 2^63-1, evitando problemas de truncamento ou transformação.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3