Ir para conteúdo
Fórum Script Brasil
  • 0

Digito de controle código IBGE


almeidamarcioc

Pergunta

Bom dia caros!

Necessito criar uma function ou algo que possa realizar o calculo do dígito de controle do código IBGE. Vejam minha situação: Home meu ERP disponibiliza apenas 6 dígito para o código IBGE, sendo que o mesmo contem 7 dígitos. Necessito então que via banco de dados (function) ele pegue estes 6 dígitos, efetue o calculo e traga um campo com 7 dígitos. Encontrei algumas informações na web, mas não estou conseguindo aplicar no postgre.

Aguardo auxílio.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Exemplos de Cálculo do Dígito de Controle do Código de Município

Exemplo 1:

Código Município IBGE = 355030 D (Município de São Paulo)

A. Cod. Mun. 355030

B. Pesos 121212

C. Ponderação (A*B) 3105030

Soma Algarismos 315030

· O somatório da soma dos algarismos é: 3 + 1 + 5 + 0 + 3 + 0 = 12.

· Dividindo o somatório por 10 teremos: 12 / 10 = 1, com um resto valendo 2.

· O dígito verificador é: DV = 10 – (resto da divisão), portanto 10 – 2 = 8.

· Neste caso, o Dígito Verificador = 8.

Editado por almeidamarcioc
Link para o comentário
Compartilhar em outros sites

  • 0
create or replace function ibge_dv(codigo char(6))
returns char(1) as $$

    select ((10 - resto) * (resto != 0)::int)::char(1)
    from (
        select
            (
                a135 +
                left(a2, 1)::int + right(a2, 1)::int + 
                left(a4, 1)::int + right(a4, 1)::int + 
                left(a6, 1)::int + right(a6, 1)::int
            ) % 10 as resto
        from (
            select
                a[1] + a[3] + a[5] as a135,
                to_char(a[2] * 2, 'FM09') as a2,
                to_char(a[4] * 2, 'FM09') as a4,
                to_char(a[6] * 2, 'FM09') as a6
            from (
                select string_to_array(codigo, null)::integer[] as a
            ) s
        ) s
    ) s
    ;

$$ language sql;
select ibge_dv('355030');
 ibge_dv 
---------
 8
Editado por Kakao
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...