Función para formatear Rut en Sql Server 2008
En esta oportunidad les traemos una función muy útil que les ayudara a la hora de querer formatear ruts con formato XX.XXX.XXX-X
CREATE FUNCTION [dbo].[Fn_FormatearRut] ( @Rut VARCHAR(12) ) RETURNS VARCHAR(12) AS BEGIN DECLARE @cont INT = 0; DECLARE @i INT = 0; DECLARE @nuevo_rut VARCHAR(12); SET @Rut = SUBSTRING(@Rut, PATINDEX('%[^0]%', @Rut+'.'), LEN(@Rut)); IF (LEN(@Rut) = 0) BEGIN RETURN ''; END ELSE BEGIN SET @Rut = REPLACE(@Rut,'.', ''); SET @Rut = REPLACE(@Rut, '-', ''); SET @nuevo_rut = '-' + RIGHT(@Rut,1); SET @i = LEN(@Rut); WHILE(@i >= 2) BEGIN SET @i = @i - 1; SET @nuevo_rut = SUBSTRING(@rut,@i, 1) + @nuevo_rut; SET @cont = @cont + 1; IF(@cont = 3 AND @i <> 0) BEGIN SET @nuevo_rut = '.' + @nuevo_rut; SET @cont = 0; END END; END; RETURN (@nuevo_rut) END
Modo de uso
SELECT dbo.Fn_FormatearRut('19');
Resultado 1-9
Esperamos sea de vuestra utilidad.
FORMAT(cast(substring((replace(replace(SN.SN_CCODIGOFISCAL,’.’,»),’-‘,»)),1,len(replace(replace(SN.SN_CCODIGOFISCAL,’.’,»),’-‘,»))-1) as integer),’###,###0’) + ‘-‘ +
right(replace(replace(SN.SN_CCODIGOFISCAL,’.’,»),’-‘,»),1)