Jump to content
Fórum Script Brasil
  • 0

Digito de controle código IBGE


Question

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 to post
Share on other sites

5 answers to this question

Recommended Posts

  • 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.

Edited by almeidamarcioc
Link to post
Share on other 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
Edited by Kakao
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148887
    • Total Posts
      644897
×
×
  • Create New...