SELECT ISNULL(REPLICATE('0', 5 - len(ISNULL('2' ,0))), '') + '2'
La cual regresaría 00002
¿Cómo Funciona?
La función replicate duplica un carácter el número de veces que le indiquemos,
aplicamos la fórmula para determinar el tamaño de la replicación, esto sería
replicacion=longitud total del campo-longitud actual de la cadena de caracteres
una vez que obetenemos la replicación simplemente sumamos la cadena de carácteres
Ahora si se ocupa muchas veces podríamos hacer una función
CREATE FUNCTION [dbo].[PadLeft]
(@Secuencia varchar(16),
@caracter char(1),
@longitud int
)
RETURNS varchar(16) AS
BEGIN
DECLARE @curSeq varchar(16)
SELECT @curSeq = ISNULL(REPLICATE(@caracter, @longitud - len(ISNULL(@Secuencia ,0))), '') + @Secuencia
RETURN @curSeq
END
(@Secuencia varchar(16),
@caracter char(1),
@longitud int
)
RETURNS varchar(16) AS
BEGIN
DECLARE @curSeq varchar(16)
SELECT @curSeq = ISNULL(REPLICATE(@caracter, @longitud - len(ISNULL(@Secuencia ,0))), '') + @Secuencia
RETURN @curSeq
END
La podemos probar de la sig. forma
SELECT dbo.PadLeft('9','0',5)
SELECT dbo.PadLeft('10','0',5)
--Util para manejo de folios