Come hanno già giustamente sottolineato gli altri - un INT non ha mai zeri iniziali - mantiene solo il valore, tutto qui (e va bene così).
Se hai bisogno di una formattazione aggiuntiva, puoi sempre aggiungere una colonna calcolata alla tua tabella, qualcosa come:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
In questo modo, la tua INT IDENTITY verrà utilizzata come INT e conterrà sempre il valore numerico, mentre DisplayNumber
contiene 001, 002, ... 014, 015, .....
e così via - automaticamente, sempre aggiornati.
Poiché si tratta di un campo persistente, ora fa parte della tabella e puoi eseguire query su di esso e persino inserire un indice per eseguire query più velocemente:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
E, naturalmente, potresti usare praticamente qualsiasi formattazione nella definizione della tua colonna calcolata, quindi potresti anche aggiungere un prefisso o qualcosa del genere:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Quindi, in questo caso, il tuo DisplayNumber
sarebbe ABC-001, ABC-002, ...
e così via.
Ottieni il meglio da entrambi i mondi:mantieni la tua INT IDENTITY che è numerica e aumentata automaticamente da SQL Server e puoi definire un formato di visualizzazione come preferisci e averlo disponibile in qualsiasi momento.