2008-08-08 16 views
225

¿Cómo puedo escapar del carácter de subrayado?SQL Server Escape a Underscore

Escribo algo como la siguiente cláusula where y quiero poder encontrar entradas reales con _d al final.

Where Username Like '%_d' 

Respuesta

338

T-SQL Reference for LIKE for SQL Server 2000:

Puede utilizar el patrón de comodines a juego caracteres como caracteres literales. Para usar un carácter comodín como carácter literal, encierre el carácter comodín entre corchetes. La tabla muestra varios ejemplos del uso de la palabra clave LIKE y los caracteres comodín [].

para su caso:

... LIKE '%[_]d' 
138

Obviamente solución @Lasse es correcto, pero no hay otra manera de resolver su problema: operador T-SQL LIKE define la cláusula facultativa ESCAPE, que le permite declarar un carácter que escapará del siguiente personaje en el patrón.

Para su caso, las siguientes cláusulas WHERE son equivalentes:

WHERE username LIKE '%[_]d';   -- @Lasse solution 
WHERE username LIKE '%$_d' ESCAPE '$'; 
WHERE username LIKE '%^_d' ESCAPE '^'; 
+20

para completar el cuadro: la cláusula 'ESCAPE' es parte del estándar SQL y funcionará en cualquier DBMS, no sólo de SQL Server. –