Em um post do fórum glufke.net estava rolando um assunto sobre como calcular o Digito Verificador do CPF, e um dos usuários desenvolveu a seguinte query que achei muito legal.
select cpf, cast(dig1 || dig2 as varchar2(2)) DigitoVerificador from dual model dimension by (1 as x) measures (lpad(285757824, 10, '0') as cpf, --O CPF deve ser incluso aqui e sem o digito verificador (Substituir pelo número 285757824) 0 as m1, 0 as dig1, 0 as m2, 0 as dig2, cast(null as varchar2(11)) as cpfdv) rules iterate (11) ( m1[1] = m1[1] + (nvl(substr(cpf[1], iteration_number + 1, 1), 0) * (11 - iteration_number)), dig1[1] = case when mod(m1[1], 11) < 2 then 0 else 11 - mod(m1[1], 11) end, cpfdv[1] = cpf[1] || dig1[1], m2[1] = m2[1] + (nvl(substr(cpfdv[1], iteration_number + 1, 1), 0) * (12 - iteration_number)), dig2[1] = case when mod(m2[1], 11) < 2 then 0 else 11 - mod(m2[1], 11) end);
O Retorno da consulta é justamente o digito verificador do seu CPF!
Valeu,
Bruno Duarte
Nenhum comentário:
Postar um comentário