2013/7/22 Marcelo da Silva <[email protected]>

> 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?
>
>
É o comportamento padrão. O PostgreSQL vai remover apenas espaços do início
e fim quando usada função trim com apenas uma string como parâmetro [1].

Mas... Você pode passar como segundo parâmetro quais serão os caracteres
que devem ser removidos do início e fim, bastando passar uma string com os
mesmos. Exemplo, para ignorar espaço, tab, line feed e carriage return:

SELECT trim(coluna, E' \n\r\t') ...;
                      ^ obs: tem um espaço no início da string.

[1]
http://www.postgresql.org/docs/current/static/functions-string.html#FUNCTIONS-STRING-OTHER

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a