2010-02-19 13 views
29

Estoy tratando de escapar del carácter de guión bajo en una declaración LIKE. He tratado de utilizar la palabra clave ESCAPE de la siguiente manera:¿Cómo escapo _ en SQL Server?

COLUMNNAME NOT LIKE '%[\_]xyz%' ESCAPE '\' 

pero no funciona. Todavía está filtrando %xyz% cuando realmente quiero filtrar %_xyz%.

Si no fuera por la palabra clave ESCAPE, ¿de qué otro modo se puede lograr esto?

Cualquier ayuda es apreciada.

Respuesta

40

Sólo esto debería funcionar:

COLUMNNAME NOT LIKE '%[_]xyz%' 

que no es necesario el ESCAPE aquí. Lo que escribiste también debería funcionar.

Si desea utilizar ESCAPE usted puede hacer esto:

columnname NOT LIKE '%\_xyz%' ESCAPE '\'; 

Documentación sobre los caracteres de escape es here.

+1

Gracias, esto funcionó. No estoy seguro de por qué no estaba funcionando antes, pero ahora lo aprecio mucho. –

15

uso de corchetes [_]

Esto funciona para mí en SQL Server 2005

select * 
from #table 
where a like '%[_]xyz%' 
+0

+1: Apoyo enlace: http://sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-eg- in-sql-server.html –

4

intentar hacerlo sin los corchetes:

COLUMNNAME NOT LIKE '%\_xyz%' ESCAPE '\'