Som de andre allerede med rette har påpeget - en INT har aldrig førende nuller - det holder bare værdien, det er alt (og det er godt på den måde).
Hvis du har brug for yderligere formatering, kan du altid tilføje en beregnet kolonne til din tabel, sådan som:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
På denne måde vil din INT IDENTITY blive brugt som en INT og altid indeholde den numeriske værdi, mens DisplayNumber
indeholder 001, 002, ... 014, 015, .....
og så videre - automagisk, altid opdateret.
Da det er et vedvarende felt, er det nu en del af din tabel, og du kan forespørge på det og endda sætte et indeks på det for at gøre forespørgsler hurtigere:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
Og selvfølgelig kan du bruge næsten enhver formatering i definitionen af din beregnede kolonne, så du kan også tilføje et præfiks eller noget:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Så i dette tilfælde er dit DisplayNumber
ville være ABC-001, ABC-002, ...
og så videre.
Du får det bedste fra begge verdener - du beholder din INT IDENTITY, som er numerisk og automatisk forøget af SQL Server, og du kan definere et visningsformat, som du vil, og have det tilgængeligt til enhver tid.