Wie die anderen bereits zu Recht darauf hingewiesen haben - ein INT hat niemals führende Nullen - es enthält nur den Wert, das ist alles (und das ist gut so).
Wenn Sie eine zusätzliche Formatierung benötigen, können Sie Ihrer Tabelle jederzeit eine berechnete Spalte hinzufügen, etwa so:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
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 aktuell.
Da es sich um ein persistentes Feld handelt, ist es jetzt Teil Ihrer Tabelle, und Sie können es abfragen und sogar einen Index darauf setzen, um Abfragen zu beschleunigen:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
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 so etwas hinzufügen:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
In diesem Fall also Ihre DisplayNumber
wäre ABC-001, ABC-002, ...
und so weiter.
Sie erhalten das Beste aus beiden Welten - Sie behalten Ihre INT IDENTITY, die numerisch ist und vom SQL Server automatisch erhöht wird, und Sie können ein Anzeigeformat beliebig definieren und jederzeit verfügbar haben.