2011-02-16 8 views
36

Mi empresa ejecuta MySQL en el modo NO_BACKSLASH_ESCAPES. ¿Cómo puedo escapar un literal % o _ en una consulta LIKE en este modo? La forma estándar es \%, pero eso no funciona en este modo.¿Cómo escapar del signo de porcentaje literal cuando la opción NO_BACKSLASH_ESCAPES está habilitada?

Ejemplo: una columna tiene los siguientes valores: 5% off, 50% off. La siguiente consulta funciona en modo estándar, pero no en el modo NO_BACKSLASH_ESCAPES:

SELECT * FROM mytable 
WHERE mycol LIKE '5\% off' 
+0

'%%' podría hacer el truco? –

+3

@Marc no, ese fue mi primer intento – Kip

Respuesta

47

necesita escapar

select * from mytable 
where mycol like '5\% off' escape '\'; 

Para una versión que funciona independientemente del modo NO_BACKSLASH_ESCAPES, puede utilizar un carácter diferente, como la pipa:

select * from mytable 
where mycol like '5|% off' escape '|'; 
+1

gracias. debe haber comillas simples alrededor de la barra diagonal inversa, no comillas dobles. – Kip

+0

oh, es lo mismo ya que se escapó el escape en NO_BLACKSLASH_ESCAPES – ajreal

+0

@ajreal ¿quisiste decir 'NO_BACKSLASH_ESCAPES'? – Cacovsky

Cuestiones relacionadas