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
