Как уже правильно отметили другие - 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 IDENTITY, который численно и автоматически увеличивается в SQL Server, и вы можете определить формат отображения любым удобным вам способом и иметь его доступным в любое время.