Como los otros han ya por derecho señalado - ceros un INT nunca ha principales - solo tiene el valor, eso es todo (y eso es bueno de esa manera).
Si necesita un nuevo formato, siempre se puede añadir una columna computada a su mesa, algo así como:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber AS RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
De esta manera, su identidad INT será utilizado como un INT y siempre contiene el valor numérico , mientras que DisplayNumber
contiene 001, 002, ... 014, 015, .....
y así sucesivamente - automágicamente, siempre actualizado.
Ya que es un campo PERSISTED, es ahora parte de su mesa, y se puede consultar en él, e incluso poner un índice en él para hacer las consultas más rápidamente:
SELECT value FROM dbo.IdentityTest WHERE DisplayNumber = '024'
Y, por supuesto, se puede usar casi cualquier formato en la definición de la columna calculada, por lo que también podría añadir un prefijo o algo:
ALTER TABLE dbo.Identitytest
ADD DisplayNumber
AS 'ABC-' + RIGHT('000' + CAST(number AS VARCHAR(3)) , 3) PERSISTED
así que en este caso, su DisplayNumber
habría ABC-001, ABC-002, ...
y así sucesivamente.
Obtienes lo mejor de ambos mundos: mantienes tu INT IDENTIDAD que es numérica y aumenta automáticamente mediante SQL Server, y puedes definir un formato de visualización como quieras y tenerlo disponible en cualquier momento.
¿Por qué esto se rechazó? La pregunta era clara y responsable. – kbrimington
@ David-Stratton: ¡Ja, ja! – kbrimington
Sé que probablemente no le importe, pero me disculpo por mis comentarios anteriores y los estoy eliminando (excepto el primero antes de que me sintiera frustrado). Estaba fuera de línea, y lo siento. – David