Googleando encontré este articulo en ingles que me pareció interesante al momento de dar formato a un valor muy similar como si lo hiciéramos desde VS.NET con al función string.Format.
A continuación el detalle del articulo:
Vamos a simular la funcion string.Format usando una Función de T-SQL
Usando C#
Clase A.cs (Ejemplo)
NroConsecutivo = ConstantesBL.Obtener_NroConsecutivo(Constantes.Grupos.CONTABSISVAAI.ToString());
log.NroDocumento = "DOC" + string.Format(Constantes.FormatoCodigo.NroCONTABSISVAAI, NroConsecutivo);
Clase B.cs (ejemplo)
public struct FormatoCodigo
{
public const string NroSrvImpVF = "{0:0000000000}";
public const string NroSrvImpTF = "{0:0000000000}";
public const string NroSrvAsRS = "{0:0000000000}";
public const string NroSrvCyEV = "{0:0000000000}";
public const string NroSrvHyD = "{0:0000000000}";
public const string NroSrvClt = "{0:0000000000}";
public const string NroUSRSISVAAI = "{0:0000000}";
public const string NroTCKSISVAAI = "{0:0000000000}";
public const string NroCONTABSISVAAI = "{0:0000000}";
}
Usando T-SQL
CREATE FUNCTION [dbo].[PadString]
(
@Seq VARCHAR(16),
@PadWith CHAR(1),
@PadLength INT
)
RETURNS VARCHAR(16)
AS
BEGIN
DECLARE @curSeq VARCHAR(16)
SELECT @curSeq = ISNULL(REPLICATE(@PadWith, @PadLength - LEN(ISNULL(@Seq,0))),'')+ @Seq
RETURN @curSeq
END
Testeando la función:
SELECT dbo.PadString ('8', '0', 5)
SELECT dbo.PadString ('abc', '*', 12)
SELECT dbo.PadString ('abc', '0', 7)
Acá los resultados
----------------
00008
(1 row(s) affected)
----------------
*********abc
(1 row(s) affected)
----------------
0000abc
(1 row(s) affected)
Espero que les sea de utilidad!!!!
…..nos vemos en los siguientes artículos.