2009/7/31 Tiago Adami <[email protected]>:
> Olá, André.
>
> Para isso eu teria que modificar o programa e realizer diversos "replaces"
> antes de mandá-lo para o banco de dados - e os usuários que abrem os
> chamados dificilmente vão se preocupar em digitar duas barras. A questão é
> justamente se existe um meio mais "automático" através do driver ODBC ou de
> alguma configuração no banco para realizar esta conversão.
>
> De qualquer forma, obrigado pela dica.
>
> --
> Tiago J. Adami
> Dois Vizinhos - Paraná - Brasil
>
>
> 2009/7/31 Andre Fernandes <[email protected]>
>>
>> Boa tarde, Tiago,
>>
>> Tente trocar os caracteres de escape '\' por duas barras seguidas cada
>> '\\'. Assim não deverá ocorrer mais problemas.
>>
>>
>>
>> 2009/7/31 Tiago Adami <[email protected]>
>>>
>>> Caros colegas, existe alguma forma de tratar pelo PostgreSQL a gravação
>>> de caracteres de escape?
>>>
>>> O que está acontecendo é o seguinte: minha aplicação tem um campo do tipo
>>> TEXT que recebe a descrição de um chamado de cliente, uma solicitação
>>> qualquer. Às vezes acontece de ser registrado um caminho de diretórios do
>>> Windows, como por exemplo:
>>>
>>> "C:\Windows\System32"
>>> "D:\PostgreSQL\8.2"
>>> etc.
>>>
>>> Só que no banco de dados a barra invertida não está sendo gravada:
>>>
>>> "C:WindowsSystem32"
>>> "D:PostgreSQL8.2"
>>>
>>> E em alguns casos o próximo caractere junto com a barra invertida é
>>> substituído por um caractere "especial".
>>>
>>> Estou procurando a dias na documentação do PostgreSQL e do driver ODBC
>>> para ele, mas não encontro nada que possa fazer com que o caractere barra
>>> invertida seja reconhecido como tal. Se eu precisar tratar na aplicação e
>>> colocar E'\\' terei que re-escrever praticamente todas as rotinas do
>>> sistema...
>>>


Veja este parâmetro de configuração:
standard_conforming_strings
http://www.postgresql.org/docs/current/interactive/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS

bdteste=# SET standard_conforming_strings=on;
SET
bdteste=# SELECT E'C:\Windows\System32';
     ?column?
-------------------
 C:WindowsSystem32
(1 registro)

bdteste=# SELECT 'C:\Windows\System32';
      ?column?
---------------------
 C:\Windows\System32
(1 registro)

===========

bdteste=# SET standard_conforming_strings=off;
SET
bdteste=# SELECT E'C:\Windows\System32';
     ?column?
-------------------
 C:WindowsSystem32
(1 registro)

bdteste=# SELECT 'C:\Windows\System32';
AVISO:  uso de escape fora do padrão em cadeia de caracteres
LINE 1: SELECT 'C:\Windows\System32';
               ^
HINT:  Utilize a sintaxe de escape de cadeia de caracteres para
escapes, i.e., E'\r\n'.
     ?column?
-------------------
 C:WindowsSystem32
(1 registro)

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a