Wenn Sie Ihre Spalte number
mit führenden Nullen anzeigen möchten, füllen Sie sie einfach in Ihrer SELECT
-Anweisung auf. Es ist eine Zahl, die NICHT mit führenden Nullen als Ganzzahl gespeichert wird.
3
ist die Anzahl der Zeichen, die Sie in der Ausgabe anzeigen möchten.
Wie die anderen bereits zu Recht angemerkt haben - ein INT hat niemals führende Nullen - er enthält nur den Wert, das ist alles (und das ist gut so).
Wenn Sie zusätzliche Formatierungen benötigen, können Sie Ihrer Tabelle immer eine berechnete Spalte hinzufügen, etwa:
%Vor% Auf diese Weise wird Ihre INT IDENTITY als INT verwendet und enthält immer den numerischen Wert, während DisplayNumber
enthält 001, 002, ... 014, 015, .....
und so weiter - automatisch, immer auf dem neuesten Stand.
Da es ein persistierendes Feld ist, ist es jetzt Teil Ihrer Tabelle, und Sie können darauf abfragen und sogar einen Index anlegen, um Abfragen schneller zu machen:
%Vor%Und natürlich könnten Sie fast jede Formatierung in der Definition Ihrer berechneten Spalte verwenden, also könnten Sie auch ein Präfix oder etwas hinzufügen:
%Vor% In diesem Fall wäre Ihr DisplayNumber
also ABC-001, ABC-002, ...
und so weiter.
Sie erhalten das Beste aus beiden Welten - Sie behalten Ihre INT IDENTITY, die numerisch ist und automatisch von SQL Server erhöht wird, und Sie können ein Anzeigeformat beliebig definieren und jederzeit verfügbar haben.
Warum brauchen Sie das? Als Integer ist 001 das gleiche wie 1. Wenn Sie wollen, dass das für Display- oder andere Zwecke ist, erstellen Sie eine andere Spalte und führen Sie Ihre Arbeit dort (Sie können es als Teil eines Triggers auf der Tabelle, bei der Einfügung, die aussieht in der neu eingefügten Zeile und erstellt den Eintrag in der Spalte entsprechend.
Hier ist eine andere Methode:
%Vor%Nicht so viele Datenduplikationen (?) wie das Hinzufügen einer Spalte zur Tabelle und keine Notwendigkeit, die Spalte in der SELECT-Anweisung anzugeben.
Ich brauche die Identity-Spalte erhöht als 001,002,003 usw.
Die Datenbank zeigt, dass es ist einfügen als 1,2,3 usw.
SQL-Datenbanken speichern Werte, nicht die Literale, die Sie zum Schreiben dieser Werte verwendet haben. 002
ist 2. Genau wie 1 + 1
ist 2. Würdest du erwarten, dass SELECT 1 + 1
die Zeichenfolge "1 + 1" anstelle von 2 anzeigt?
Wenn die führenden Nullen in Ihrer Spalte gespeichert werden sollen, müssen Sie einen Zeichentyp verwenden. Aber dann können Sie AUTOINCREMENT
/ IDENTITY
nicht verwenden.
Was Sie wahrscheinlich wirklich wollen, ist etwas wie printf("%03d", number)
im Programm, das aus der Datenbank liest.
Tags und Links sql sql-server padding identity-column