Funcion que recibe rut sin puntos y sin guion, que retorna un 0 si es valido si no un 1 si es incorrecto,
ojala les sea de utilidad!!!
CREATE FUNCTION VALIDA_RUT (@RUT VARCHAR(20))
--CREADO POR [email protected]
RETURNS int
AS
BEGIN
declare @num_rut varchar(20)
declare @dv_rut char(1)
declare @cont int
declare @num_multi int
declare @suma int
declare @resto int
declare @dv_final varchar(30)
declare @respuesta int -- si es 0 el rut es valido si es 1 el rut es incorrecto
set @num_rut=SUBSTRING(@rut,1,LEN(@rut)-1)
set @dv_rut=SUBSTRING(@rut,LEN(@rut),1)
set @num_rut= REVERSE(@num_rut)
set @cont=1
set @num_multi=2
set @suma=0
while @cont<= LEN(@num_rut)
begin
if @num_multi=8
begin
set @num_multi=2
end
IF CHARINDEX(SUBSTRING(@num_rut,@cont,1),'0123456789' )>0
BEGIN
set @suma=@suma + convert(int,SUBSTRING(@num_rut,@cont,1)) * @num_multi
END
set @num_multi = @num_multi + 1
set @cont = @cont + 1
end
set @resto= @suma % 11
set @dv_final = convert(char(2),11 - @resto)
if @dv_final='11'
begin
set @dv_final='K'
end
if @dv_final='10'
begin
set @dv_final='0'
end
if @dv_final=@dv_rut
begin
set @respuesta=0
end
else
begin
set @respuesta=1
end
return (@respuesta)
END