Jak již správně poznamenali ostatní - INT nikdy nemá úvodní nuly - pouze si drží hodnotu, to je vše (a to je takto dobře).
Pokud potřebujete nějaké další formátování, můžete do tabulky vždy přidat vypočítaný sloupec, něco jako:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Tímto způsobem bude vaše INT IDENTITY použita jako INT a bude vždy obsahovat číselnou hodnotu, zatímco DisplayNumber
obsahuje 001, 002, ... 014, 015, .....
a tak dále – automaticky, vždy aktuální.
Vzhledem k tomu, že se jedná o trvalé pole, je nyní součástí vaší tabulky a můžete se na něj dotazovat a dokonce do něj vložit index, aby byly dotazy rychlejší:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
A samozřejmě můžete v definici vypočítaného sloupce použít téměř jakékoli formátování, takže můžete také přidat předponu nebo něco podobného:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
V tomto případě tedy vaše DisplayNumber
by bylo ABC-001, ABC-002, ...
a tak dále.
Získáte to nejlepší z obou světů – ponecháte si svou INT IDENTITY, která je numerická a automaticky zvyšována SQL Serverem, a můžete definovat formát zobrazení, jak chcete, a mít jej kdykoli k dispozici.