Jak już słusznie zauważyli inni – INT nigdy nie ma wiodących zer – po prostu przechowuje wartość, to wszystko (i to dobrze).
Jeśli potrzebujesz dodatkowego formatowania, zawsze możesz dodać do tabeli kolumnę obliczeniową, na przykład:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
W ten sposób twoja INT IDENTITY będzie używana jako INT i zawsze zawiera wartość liczbową, podczas gdy DisplayNumber
zawiera 001, 002, ... 014, 015, .....
i tak dalej - automagicznie, zawsze aktualne.
Ponieważ jest to pole utrwalone, jest teraz częścią Twojej tabeli i możesz wykonywać na nim zapytania, a nawet umieszczać na nim indeks, aby przyspieszyć wykonywanie zapytań:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
I oczywiście możesz użyć dowolnego formatowania w definicji swojej kolumny wyliczanej, więc możesz również dodać przedrostek lub coś takiego:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
W tym przypadku Twój DisplayNumber
byłoby ABC-001, ABC-002, ...
i tak dalej.
Otrzymujesz to, co najlepsze z obu światów - zachowujesz TOŻSAMOŚĆ, która jest numeryczna i automatycznie zwiększana przez SQL Server, i możesz zdefiniować format wyświetlania w dowolny sposób i mieć go w każdej chwili.