2009-03-06 4 views
0

내가 PostgreSQL의 8.2탈출 브래킷

절이을위한 패턴 매칭 표현의 브래킷을 탈출하려고이 같은 같습니다

WHERE field SIMILAR TO '%UPC=\[ R%%(\mLE)%' 

을하지만 난 점점 계속 :

ERROR: invalid regular expression: brackets [] not balanced 

답변

2

시험해보기 :

select '%UPC=\[ R%%(\mLE)%'; 
WARNING: nonstandard use of escape in a string literal 
LINE 1: select '%UPC=\[ R%%(\mLE)%'; 
      ^
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'. 
    ?column?  
------------------ 
%UPC=[ R%%(mLE)% 
(1 row) 

Postgres를 역 호환 모드 대신 standard conforming strings 모드로 설정해야합니다.

set standard_conforming_strings=1; 
select '%UPC=\[ R%%(\mLE)%'; 
     ?column?  
-------------------- 
%UPC=\[ R%%(\mLE)% 
(1 row) 

또는 모드에 관계없이 작동 escape string syntax 사용할 필요가 :

set standard_conforming_strings=1; 
select E'%UPC=\\[ R%%(\\mLE)%'; 
     ?column?  
-------------------- 
%UPC=\[ R%%(\mLE)% 
(1 row) 

set standard_conforming_strings=0; 
select E'%UPC=\\[ R%%(\\mLE)%'; 
     ?column?  
-------------------- 
%UPC=\[ R%%(\mLE)% 
(1 row) 

을하면 단일 사용자 또는 그룹에 대한 alter user를 사용하여, 하나의 데이터베이스에 대한 alter database를 사용하는 모든 데이터베이스는 postgresql.conf에서 할 수 set this setting, 현재 연결에 대해 set을 사용합니다.

+0

방금 ​​이스케이프 문자열 구문을 사용했는데 효과가있었습니다. 나는 '\ m'도 탈출하는 것을 잊어 버렸고 문제가있었습니다. 감사! – hyperboreean