Както другите вече правилно посочиха - INT никога няма водещи нули - той просто държи стойността, това е всичко (и това е добре по този начин).
Ако имате нужда от допълнително форматиране, винаги можете да добавите изчислена колона към вашата таблица, нещо като:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
По този начин вашата INT IDENTITY ще се използва като INT и винаги съдържа числовата стойност, докато DisplayNumber
съдържа 001, 002, ... 014, 015, .....
и така нататък - автоматично, винаги актуален.
Тъй като това е постоянно поле, то вече е част от вашата таблица и можете да правите заявки в него и дори да поставите индекс върху него, за да направите заявките по-бързи:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
И разбира се, можете да използвате почти всяко форматиране в дефиницията на вашата изчислена колона, така че можете също да добавите префикс или нещо подобно:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Така че в този случай вашият DisplayNumber
ще бъде ABC-001, ABC-002, ...
и така нататък.
Получавате най-доброто от двата свята – запазвате своята INT ИДЕНТИЧНОСТ, която е цифрова и автоматично се увеличава от SQL Server, и можете да дефинирате формат на показване по какъвто начин желаете и да го имате на разположение по всяко време.