2012-02-24 4 views
5

MySQL 쿼리에서 이스케이프 문자를 사용하지 않도록 설정하는 방법이 있습니까? 예를 들어, 다음과 같은 테이블 :MySQL 쿼리에서 이스케이프 문자 사용 안 함

mysql> select * from test1; 
+------------------------+-------+ 
| name     | value | 
+------------------------+-------+ 
| C:\\media\data\temp\ |  1 | 
| C:\\media\data\temp |  2 | 
| /unix/media/data/temp |  3 | 
| /unix/media/data/temp/ |  4 | 
+------------------------+-------+ 

나는 유효한 쿼리로 다음 원하는 : 내가 대신

mysql> select * from test1 where name='C:\\\\media\\data\\temp\\'; 

사용할 수 있다는 것을 알고

mysql> select * from test1 where name='C:\\media\data\temp\'; 

하지만 건물입니다 이 쿼리는 my_snprintf()를 사용하므로 대신 사용해야합니다.

C:\\\\\\\\media\\\\data\\\\temp\\\\ 

... 등등! 단일 MySQL 쿼리에 이스케이프 문자를 사용하지 않도록 설정하는 방법이 있습니까?

+0

어떤 언어 당신이 이런 짓을? 인터넷에서 my_snprintf에 대한 정보를 찾을 수 없습니다. 당신을 위해 탈출하는 함수를 만들 수있는 방법이 없습니까? –

+0

C. my_snprintf() - http://dev.mysql.com/doc/refman/5.5/en/plugin-services.html을 사용 중입니다. Sprintf가 주로하는 일을합니다. –

답변

8

당신은 비활성화 할 수 있습니다 백 슬래시는 SQL 모드에서 NO_BACKSLASH_ESCAPES를 설정하여 탈출 :

-- save mode & disable backslashes 
SET @[email protected]@sql_mode; 
SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES'); 

-- run the query 
SELECT 'C:\\media\data\temp\'; 

-- enable backslashes 
SET @@[email protected]_sql_mode; 
1

MySQL 명령 행에서 테이블 출력의 경우, "boxing"컬럼을 사용하면 하나의 컬럼 값을 다른 컬럼 값과 구별 할 수 있습니다. 일괄 처리 모드로 생성되거나 --batch 또는 --silent 옵션이 제공되는 경우와 같이 표 형식이 아닌 출력의 경우 출력에서 ​​특수 문자가 이스케이프되므로 쉽게 식별 할 수 있습니다. 개행, 탭, NUL 및 백 슬래시는 \ n, \ t, \ 0 및 \로 작성됩니다. --raw 옵션을 사용하면이 문자가 이스케이프 처리되지 않습니다.

+0

'--raw'가 작동했습니다! 감사! –