Как уже справедливо указывали другие, 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, и вы можете определить формат отображения любым удобным вам способом, и он будет доступен в любое время.
person
marc_s
schedule
07.08.2010