sql >> Databasteknik >  >> RDS >> Mysql

LPAD med inledande nolla

Jag tycker att du ska tänka på att de riktlinjer du läser gäller för hur en faktura ska visas , och inte hur det ska lagras i databasen.

När ett nummer lagras som ett INT är det ett rent nummer. Om du lägger till nollor framför och lagrar det igen är det fortfarande samma nummer.

Du kan välja NUMER-fältet enligt följande, eller skapa en vy för den tabellen:

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

Eller, i stället för att ändra data när du väljer den från databasen, överväg att fylla ut numret med nollor när du visar det, och bara när du visar det.

Jag tror att ditt krav på att historiska data ska förbli oförändrade är en omtvistad fråga. Även för historiska data är en faktura med nummer 001203 samma som en faktura med nummer 1203.

Men om du absolut måste göra det som du beskriver, kan det fungera att konvertera till ett VARCHAR-fält. Konverterade historiska data kan lagras som de är, och alla nya poster kan fyllas ut till det erforderliga antalet nollor. Men det rekommenderar jag inte.



  1. Var lagrar PostgreSQL databasen?

  2. Vilken ORM ska jag använda för Node.js och MySQL?

  3. PDO-felsökning - Visa fråga EFTER Bind?

  4. Lär dig mer om DBMS_OUTPUT-paketet i Oracle