2012-02-24 15 views
5

¿Hay alguna forma de desactivar los caracteres de escape en una consulta MySQL? Por ejemplo, por la siguiente tabla:Desactivar caracteres de escape en una consulta 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 | 
+------------------------+-------+ 

yo quiero que lo siguiente es una consulta válida:

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

Yo sé que en vez puedo usar

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

Pero estoy construyendo esta consulta usando my_snprintf(), así que en su lugar tengo que usar

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

... ¡y así sucesivamente! ¿Hay alguna forma de desactivar los caracteres de escape para una única consulta MySQL?

+0

Qué idioma haces esto en? No pude encontrar ninguna información para my_snprintf en internet. ¿No hay forma de que puedas crear una función que se te escape? –

+0

Estoy usando C. my_snprintf() - http://dev.mysql.com/doc/refman/5.5/en/plugin-services.html. Hace principalmente lo que hace sprintf. –

Respuesta

8

Puede desactivar la barra invertida se escapa mediante el establecimiento de NO_BACKSLASH_ESCAPES en el modo SQL:

-- 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

Para la salida tabular en la línea de comandos de MySQL, el "boxeo" de las columnas permite distinguir un valor de columna de otro. Para la salida no tabular (como la que se produce en modo por lotes o cuando se proporciona la opción --batch o --silent), los caracteres especiales se escapan en el resultado para que puedan identificarse fácilmente. Nueva línea, pestaña, NUL y barra diagonal inversa se escriben como \ n, \ t, \ 0 y \. La opción --raw deshabilita el escape de este carácter.

+0

'--raw' trabajado! ¡Gracias! –

Cuestiones relacionadas