Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

LPAD com zero à esquerda


Acho que você deve considerar que as diretrizes que você leu se aplicam a como uma fatura deve ser exibida , e não como deve ser armazenado no banco de dados.

Quando um número é armazenado como INT, é um número puro. Se você adicionar zeros na frente e armazená-lo novamente, ainda será o mesmo número.

Você pode selecionar o campo NUMER da seguinte forma ou criar uma visualização para essa tabela:
SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...

Ou, em vez de alterar os dados ao selecioná-los no banco de dados, considere preencher o número com zeros ao exibi-lo e somente ao exibi-lo.

Acho que sua exigência de que os dados históricos permaneçam os mesmos é um ponto discutível. Mesmo para dados históricos, uma fatura com o número 001203 é igual a uma fatura com o número 1203.

No entanto, se você absolutamente precisar fazer isso da maneira descrita, a conversão para um campo VARCHAR pode funcionar. Os dados históricos convertidos podem ser armazenados como estão, e quaisquer novas entradas podem ser preenchidas com o número necessário de zeros. Mas eu não recomendo isso.