他の人がすでに正しく指摘しているように(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, ...
になります など。
両方の長所を活用できます。数値でSQLServerによって自動的に増加するINTIDENTITYを維持し、表示形式を好きなように定義して、いつでも利用できるようにすることができます。