Mysql
 sql >> Database >  >> RDS >> Mysql

LPAD con zero iniziale

Penso che dovresti considerare che le linee guida che hai letto si applicano a come una fattura dovrebbe essere visualizzata , e non come dovrebbe essere conservato nel database.

Quando un numero viene memorizzato come INT, è un numero puro. Se aggiungi degli zeri davanti e lo memorizzi di nuovo, è sempre lo stesso numero.

Puoi selezionare il campo NUMER come segue o creare una vista per quella tabella:

SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...

Oppure, invece di modificare i dati quando li selezioni dal database, considera di riempire il numero con zeri quando lo visualizzi e solo quando lo visualizzi.

Penso che la tua esigenza che i dati storici rimangano gli stessi sia un punto controverso. Anche per i dati storici, una fattura numerata 001203 è la stessa di una fattura numerata 1203.

Tuttavia, se devi assolutamente farlo nel modo in cui descrivi, la conversione in un campo VARCHAR potrebbe funzionare. I dati storici convertiti possono essere archiviati così come sono e qualsiasi nuova voce può essere riempita fino al numero richiesto di zeri. Ma non lo consiglio.