Mysql
 sql >> Datenbank >  >> RDS >> Mysql

LPAD mit führender Null

Ich denke, Sie sollten bedenken, dass die Richtlinien, die Sie gelesen haben, für die Anzeige einer Rechnung gelten , und nicht wie es gespeichert werden sollte in der Datenbank.

Wenn eine Zahl als INT gespeichert wird, handelt es sich um eine reine Zahl. Wenn Sie Nullen voranstellen und erneut speichern, ist es immer noch dieselbe Nummer.

Sie können das Feld NUMER wie folgt auswählen oder eine Ansicht für diese Tabelle erstellen:

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

Oder anstatt die Daten zu ändern, wenn Sie sie aus der Datenbank auswählen, sollten Sie die Zahl mit Nullen auffüllen, wenn Sie sie anzeigen, und nur dann, wenn Sie sie anzeigen.

Ich denke, Ihre Forderung, dass historische Daten gleich bleiben, ist ein strittiger Punkt. Selbst für historische Daten ist eine Rechnung mit der Nummer 001203 dasselbe wie eine Rechnung mit der Nummer 1203.

Wenn Sie es jedoch unbedingt so machen müssen, wie Sie es beschreiben, kann die Konvertierung in ein VARCHAR-Feld funktionieren. Konvertierte historische Daten können unverändert gespeichert werden, und alle neuen Einträge können mit der erforderlichen Anzahl von Nullen aufgefüllt werden. Aber das empfehle ich nicht.