Tengo este comportamiento en PostgreSQL 9.3:
-- (1) this "doesn't" work select 't\om' like '%t\om%' -- result = false -- (2) this works select 't/om' like '%t/om%' -- result = true
¿Por qué el resultado de la consulta (1) es falso? ¿Cuál es la mejor manera de ser verdadero en (1) consulta?
El \
no tiene un significado especial en SQL, excepto dentro de la condición del operador LIKE
, donde se puede usar para escapar de los caracteres comodín.
Pero puede definir un carácter de escape diferente para LIKE que luego convierte a \
en un carácter "normal":
select 't\om' like '%t\om%' escape '#';
editar
Como ha comentado Sunrelax, también puede usar una cadena vacía como secuencia de "escape":
select 't\om' like '%t\om%' escape '';
\
es una secuencia de escape, por lo que también debe escapar:
select 't\om' like '%t\\om%';
También hay una opción de configuración que puede establecer. Ver Escape de barra invertida en Postgresql