Validação Ean 13 Dígitos

13/07/2015

0

Bom Dia

Passando para compartilhar o código, hoje fui procurar uma validação em SQL para o Ean de 13 dígitos e não achei nenhuma que funcionasse, fiz na mão seguindo a regra do EAN para calcular o dígito verificador.

create Function UDF_Valida_Ean_13(@Ean varchar(13)) returns varchar(1) as
begin

--declare @Ean varchar(13) = '5010017088439' -- 088537031467
declare @12Dig varchar(12)
declare @Valor1 int
declare @Valor2 int
declare @Valor3 int
declare @Mult10 int
declare @DigVerificador int 
declare @DigVerifCalculado int 
declare @Retorno varchar(1)

set @DigVerificador = convert(int,substring(@Ean,13,1))

set @12Dig = SUBSTRING(@Ean,1,12)

-- Soma Posições Pares e Multiplica por 3
set @Valor1 = convert(int,SUBSTRING(@Ean,2,1)) + 
              convert(int,SUBSTRING(@Ean,4,1)) +
			  convert(int,SUBSTRING(@Ean,6,1)) +
			  convert(int,SUBSTRING(@Ean,8,1)) +
			  convert(int,SUBSTRING(@Ean,10,1)) +
			  convert(int,SUBSTRING(@Ean,12,1)) 
set @Valor1 = @Valor1 * 3

-- Soma Posições Impares
set @Valor2 = convert(int,SUBSTRING(@Ean,1,1)) + 
              convert(int,SUBSTRING(@Ean,3,1)) +
			  convert(int,SUBSTRING(@Ean,5,1)) +
			  convert(int,SUBSTRING(@Ean,7,1)) +
			  convert(int,SUBSTRING(@Ean,9,1)) +
			  convert(int,SUBSTRING(@Ean,11,1)) 

set @Valor3 = @Valor1 + @Valor2

-- Verifica Próximo Múltiplo de 10
if (@Valor3 <= 10)
   set @Mult10 = 10
else
if ((@Valor3 % 10) = 0)
   set @Mult10 = @Valor3
else
begin
     if (@Valor3 >= 100)
	    set @Mult10 = (convert(int,Substring(convert(varchar(3),@Valor3),1,2)) + 1) * 10
	 else
	    set @Mult10 = (convert(int,Substring(convert(varchar(2),@Valor3),1,1)) + 1) * 10
end

-- Subtrai o Múltiplo de 10 pelo valor calculado para achar o Dígito Verificador
set @DigVerifCalculado = @Mult10 - @Valor3

if (@DigVerifCalculado = @DigVerificador)
  set @Retorno = 'S'
else
  set @Retorno = 'N'

  return(@Retorno)

end
Lucas Ramos

Lucas Ramos

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar