Em 22/07/13, Marcelo da Silva<marc...@ig.com.br> escreveu:
> Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as vezes
> vem caracteres invisiveis, mas que nos dão uma dor de cabeça.
>
> Veja os exemplos dos select abaixo:
>
> SELECT 'TESTE'  = "TESTE"
> SELECT TRIM('TESTE ') = "TESTE"
> SELECT TRIM('TESTE
> ') = "TESTE "
>
> Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa o
> Trim menos "eficiente" pois ele tira o chr(13) mas deixa um espaço.
>
> Me parece que o Trim entende que logo depois do " " tem um novo caracter,
> então ele passa a considerar o " " como um intervalo de palavras... isso
> acaba causando problemas numa verificação no Delphi, que que o Trim do
> Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais
> caracteres visiveis.
>
> Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está
> correto?
>
> Imaginem uma string "Teste
>
>
>
> "
>
> Ele acaba deixando um caracter em branco no final, no meu ver parece algo
> errado com o Trim.
>


Note que "TESTE" é um nome de campo (delimited identifier ou quoted identifier).
http://www.postgresql.org/docs/current/interactive/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

Talvez a função regexp_replace facilite seu trabalho.
SELECT regexp_replace(seu_campo, E'[\\s\\r]', '', 'g');
http://www.postgresql.org/docs/current/interactive/functions-matching.html#FUNCTIONS-POSIX-REGEXP

Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a