jueves, 20 de septiembre de 2012

Como dar formato a un valor usando T-SQL: función PadLeft

 

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.