Como los otros ya han señalado con razón, un INT nunca tiene ceros a la izquierda, solo contiene el valor, eso es todo (y eso es bueno de esa manera).
Si necesita algún formato adicional, siempre puede agregar una columna calculada a su tabla, algo como:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
De esta manera, su IDENTIDAD INT se utilizará como INT y siempre contiene el valor numérico, mientras que DisplayNumber
contiene 001, 002, ... 014, 015, .....
y así sucesivamente - automáticamente, siempre actualizado.
Dado que es un campo persistente, ahora es parte de su tabla y puede consultarlo e incluso ponerle un índice para que las consultas sean más rápidas:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
Y, por supuesto, podría usar casi cualquier formato en la definición de su columna calculada, por lo que también podría agregar un prefijo o algo así:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
Entonces, en este caso, su DisplayNumber
sería ABC-001, ABC-002, ...
y así sucesivamente.
Obtiene lo mejor de ambos mundos:mantiene su IDENTIDAD INT, que es numérica y aumenta automáticamente mediante SQL Server, y puede definir un formato de visualización como desee y tenerlo disponible en cualquier momento.