Mysql
 sql >> Base de données >  >> RDS >> Mysql

LPAD avec zéro non significatif

Je pense que vous devriez considérer que les directives que vous lisez s'appliquent à la façon dont une facture doit être affichée , et non comment il doit être stocké dans la base de données.

Lorsqu'un nombre est stocké en tant que INT, c'est un nombre pur. Si vous ajoutez des zéros devant et que vous le stockez à nouveau, c'est toujours le même nombre.

Vous pouvez sélectionner le champ NUMER comme suit ou créer une vue pour cette table :

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

Ou, plutôt que de modifier les données lorsque vous les sélectionnez dans la base de données, envisagez de remplir le nombre avec des zéros lorsque vous l'affichez, et uniquement lorsque vous l'affichez.

Je pense que votre exigence que les données historiques restent les mêmes est un point discutable. Même pour les données historiques, une facture numérotée 001203 est identique à une facture numérotée 1203.

Cependant, si vous devez absolument le faire comme vous le décrivez, la conversion en un champ VARCHAR peut fonctionner. Les données historiques converties peuvent être stockées telles quelles et toute nouvelle entrée peut être complétée par le nombre de zéros requis. Mais je ne le recommande pas.