Checksum T-SQL [AJUDA]

27/01/2014

0

Pessoal,

Estou utilizamos a plataforma SQL-Server no Share point e tive um problema com 8.000 registros que estão inconsistentes, algumas tuplas não corresponde o vigésimo caractere.

O caso é que os registros precisam estar com 20 dígitos, ou seja 19 dígitos que vem no plástico e o vigésimo é o Dígito Verificador DV, calculado com um Algorítmo de Luhn.

http://planetcalc.com/2464/ (Next check digit:)

Preciso de uma function ou um trigger para atualizar minhas tuplas.

Estou criando o banco.



Kallel Albuquerque

Kallel Albuquerque

Responder

Posts

05/02/2014

Alex Lekao

Oi Kallel,

Nao entendi, vc quer alguma funcao que faca o calculo que vc citou?

ou vc quer que o campo que deveria ter 20 caractares nao aceitasse menor que 20 caracteres?

Responder

05/02/2014

Alex Lekao

Da uma olhada neste link, acho que eh o que vc procura.

[url]http://www.planetadelphi.com.br/dica/5197/funcao-modulo-10[/url]
Responder

10/02/2014

Kallel Albuquerque

Obrigado Alex,

Eu consegui esse código:

CREATE FUNCTION fCheckNumberLuhn (
@Luhn VARCHAR(20)
)
RETURNS BIT /* true or false*/

AS

BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN 0

DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT

SELECT @Index = LEN(@Luhn),
@Multiplier = 1,
@Sum = 0

WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1

RETURN CASE WHEN @Sum % 10 = 0 THEN 1 ELSE 0 END
END

CREATE FUNCTION fCheckNumberLuhn (
@Luhn VARCHAR(20)
)
RETURNS VARCHAR(2)

AS

BEGIN
IF @Luhn LIKE '%[^0-9]%'
RETURN @luhn

DECLARE @Index SMALLINT,
@Multiplier TINYINT,
@Sum INT,
@Plus TINYINT

SELECT @Index = LEN(@Luhn),
@Multiplier = 2,
@Sum = 0

WHILE @Index >= 1
SELECT @Plus = @Multiplier * CAST(SUBSTRING(@Luhn, @Index, 1) AS TINYINT),
@Multiplier = 3 - @Multiplier,
@Sum = @Sum + @Plus / 10 + @Plus % 10,
@Index = @Index - 1

RETURN CASE WHEN @Sum % 10 = 0 THEN 1 ELSE 0 END
END

Não é nada complexo, mais funciona.
Responder

10/02/2014

Alex Lekao

Blz...

bom que ajudou.

Abraco.

Alex - Lekao
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar