Olá Todos,

Parece haver apanas um problema com a descodificação do campo
log_key_dne de alguns registros, que estão decodificados no campo cep
na mesma tabela (log_logradouro).

Encontrei em http://blog.otavio.info/2008/06/banco-de-dados-dos-correios.html,
uma função para PostgreSQL, postada por Allyson, que parece resolver o
problema. Aí e só atualizar o campo cep com uma instrução update.

cep=# select count(*) from log_logradouro;
 count
--------
 855861
(1 row)

cep=# select count(*) from log_logradouro where cep <>
fncdecryptcep(log_key_dne);
 count
--------
 114323
(1 row)

cep=# UPDATE log_logradouro SET cep = fncdecryptcep(log_key_dne) WHERE
cep <> fncdecryptcep(log_key_dne);
UPDATE 114323

Consultando:

cep=# SELECT log_logradouro.log_nome as "Logradouro",
log_bairro.bai_no as "Bairro", log_localidade.loc_no as "Localidade",
log_logradouro.ufe_sg as "UF", log_logradouro.cep as "CEP" FROM
log_logradouro, log_bairro, log_localidade WHERE
log_logradouro.bai_nu_sequencial_ini = log_bairro.bai_nu_sequencial
AND log_logradouro.loc_nu_sequencial =
log_localidade.loc_nu_sequencial AND log_logradouro.cep = '89280412';
      Logradouro      | Bairro |    Localidade    | UF |   CEP
----------------------+--------+------------------+----+----------
 Rua Gerhardt Ziesche | Centro | São Bento do Sul | SC | 89280412
(1 row)

Lembrando que o campo cep, também está presente em outras tabelas.

A função:

Create or Replace Function fncdecryptcep(argkeydne varchar) Returns
varchar AS $fncdecryptcep$
Declare
  decryptedcep varchar := '';
Begin
  For i In 1..length($1) By 2 Loop
  Case substr($1,i,2)
  When 'X8','CN','8X','NC' Then
    decryptedcep := decryptedcep || 1;
  When 'Z0','EP','0Z','PE' Then
    decryptedcep := decryptedcep || 2;
  When '1B','GR','B1','RG' Then
    decryptedcep := decryptedcep || 3;
  When '3D','ID','D3','DI' Then
    decryptedcep := decryptedcep || 4;
  When '4C','JS','C4','SJ' Then
    decryptedcep := decryptedcep || 5;
  When '2A','HQ','A2','QH' Then
    decryptedcep := decryptedcep || 6;
  When '09','FO','90','OF' Then
    decryptedcep := decryptedcep || 7;
  When 'Y7','DM','7Y','MD' Then
    decryptedcep := decryptedcep || 8;
  When '5V','BK','V5','KB' Then
    decryptedcep := decryptedcep || 9;
  When 'UG','AL','GU','LA' Then
    decryptedcep := decryptedcep || 0;
  Else
    Return Null;
  End Case;
End Loop;
Return decryptedcep;
End;
$fncdecryptcep$ Language plpgsql;

Comment On Function fncdecryptcep(argkeydne varchar) Is 'Função para
Descriptografar os CEPs do Banco de Dados do DNE';

Abraços


Em 24 de abril de 2012 11:16, Ademir Cristiano Gabardo
<[email protected]> escreveu:
> SELECT * FROM log_logradouro WHERE CEP = 89280412;
>
> Este é o cep do meu prédio... não está no DB.
> Por nome de rua tbm não "Gerhardt Ziesche"
>
> (Na busca dos correios)...
> Busca CEP
> Faça suas consultas individuais de CEP, destinadas a endereçamentos de
> objetos de correspondências a serem postadas nos Correios.
> 1 Logradouro(s)
>  Logradouro      Bairro          Localidade      UF      CEP
> Rua Gerhardt Ziesche    Centro  São Bento do Sul        SC      89280-412
>
>

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a