Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GGerminiani

[Resolvido] Comando para Postgres

Recommended Posts

Prezados,

 

Boa tarde.

 

Solicito por gentileza a ajuda de vcs.

 

Estou com uma série de campos no meu banco de dados (Postgres) que possue espaço em excesso, prejudicando a visualização dos meus relatórios.

 

Por exemplo:

 

"São Paulo, 23 de Agosto de 2012._____A Norte Energia, empresa responsável pela hidrelétrica Belo Monte, foi notificada da decisão da Justiça.______________________________________________"

 

Obs.: _ (underline) = espaço em excesso.

 

Na maioria dos casos o espaço em excesso aparece ao final da frase - uma explicação poderia ser para completar o espaço de 100 caracteres, por exemplo -, porem pode acontecer no meio do texto.

 

Precisa da ajuda de vcs para alguma função de UPDATE para que eu possa eliminar esses espaços a mais, como a função do excel ARRUMAR.

 

Obs.: Uso PGADMIN.

 

Poderiam me ajudar por favor?!

 

Grato,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o tipo dos campos ?

Existem tipos com tamanho fixo.

 

Tipos

 

No select todavia pode ser resolvido usando TRIM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para arrumar pode fazer um update.

Eu faria um backup antes.

 

update tabela
set texto = trim(texto)

 

Rever os inserts do Sisma para gravar sem espaços não necessários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

Bom dia.

 

Tentei o código abaixo:

 

UPDATE LANCAMENTOS  SET  DESHISTO  = TRIM (DESHISTO) 
                    WHERE EMPRESA = '000779' AND 
                    COMPETENCIA   = '032011' AND
                    CONTA         = '101051300025'

 

Apareceu que houve 2 alterações.

 

Porem fui checar e continuava a mesma coisa. Então fiz o seguinte teste com outro campo antes de passar a função novamente:

 

select CHAR_LENGTH(DESHISTO) FROM  LANCAMENTOS 
                    WHERE EMPRESA = '000779' AND 
                    COMPETENCIA   = '032011' AND
                    CONTA         = '101051300004'

 

Também com dois campos, deram 79 e 69 caracteres.

Então fiz a função TRIM novamente:

 

UPDATE LANCAMENTOS  SET  DESHISTO  = TRIM (DESHISTO) 
                    WHERE EMPRESA = '000779' AND 
                    COMPETENCIA   = '032011' AND
                    CONTA         = '101051300004'

 

Após isso contei novamente o número de caracteres e continua 79 e 69.

 

Ou seja, a função TIM não está acontecendo como esperava.

 

Imagina o que estou fazendo de errado?

 

Grato,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o trim so tira os espaços a direita e a esquerda da string, no meio não. você pode tentar eliminar os "espaços" em branco procurando por quebras de linhas ou tabs...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shini,

 

Entendi.

 

Porem esses espaços realmente estão no final da string (x):

 

"Aprenda a criar temas fantásticos com o Wordpress.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

 

Pelo que vi, não foram removidos.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se a função rtrim() funciona.... removo somente os espaço a direita.... o trim ja deveria funcionar..... a menos q o campo seja character(n)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente fiz o mesmo teste mencionado acima, agora com RTRIM, porem sem sucesso.

 

 

Está certo mesmo o comando?:

 

UPDATE LANCAMENTOS  SET  DESHISTO  = RTRIM (DESHISTO) 
                    WHERE EMPRESA = '000779' AND 
                    COMPETENCIA   = '032011' AND
                    CONTA         = '101051300004'

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites
update tabela set campo = REPLACE (campo, '\n', ' ') where id = ?;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para remover espaçõs do meio de uma string é preciso uma FUNCTION específica.

 

Tranformar

 

Ouviram    do     Ipiranga      as margens

 

em

 

Ouviram do Ipiranga as margens

 

Veja se isto ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Boa tarde!

 

A parte dos espaços funcionaram, porem descobri que tenho outro probleminha..

 

Não são só espaços... São ENTERs também...

 

Existe alguma função igual o TRIM, porem para espaços?

 

Ou se não, tem como eu fazer um REPLACE?

 

Como ficaria? Algo parecido com isso?

 

REPLACE (CAMPO, Chr (13), "") ....?

 

Grato,

Gustavo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

enter no caso é presentado por \n ou \r\n. qual foi a solução para remover os espaços?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o TRIM funcionou.. a questão é que está muito complicado solucionar esse problemas, pois acontece que o suporte do software que usamos fala que são ENTERs dados pelos usuários...

 

Num relatório, o sistema apresenta uns PIPERS, e novamente o suporte confirma que esses representam espaços no campo, por exmeplo:

 

São Paulo,||| 30 de Agosto de 2012.|||

 

O estranho é que eu fiz o comando de REPLACE ----- REPLACE (CAMPO, Chr(13), '') ---- que aparentemente funcionou - pelo menos o PgADMIN informou que o comando foi executado. -, mas quando fomos tirar os relatórios, os possíveis "ENTERs" continuam lá.

 

Aliás, nem sei se realmente é ENTER, pois a representação de PIPER não parece muito bem um PIPER... seria um PIPER em negrito ||| sei lá.

 

Imagina alguma solução?!

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era

 

 

REPLACE (REPLACE (CAMPO, Chr(13), ''), Chr(11), '') 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.