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.

También te podría gustar...

1 respuesta

  1. JP dice:

    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)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.