SQL Server Escape un subrayado


339

¿Cómo escapo el carácter de subrayado?

Estoy escribiendo algo así como la siguiente cláusula where y quiero poder encontrar entradas reales con _d al final.

Where Username Like '%_d'

Respuestas:


525

Referencia de T-SQL para LIKE :

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

Para su caso:

... LIKE '%[_]d'

¡Oh hombre! ... si aún no funciona, asegúrese de tener la columna correcta.
Jens Frandsen

198

Obviamente, la solución @Lasse es correcta, pero hay otra forma de resolver su problema: el operador T-SQL LIKEdefine el ESCAPE opcional cláusula , que le permite declarar un carácter que escapará al siguiente carácter 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 '^';

43
Para completar la imagen: la ESCAPEcláusula es parte del estándar SQL y funcionará en cualquier DBMS, no solo en SQL Server.
a_horse_with_no_name

2

Estas soluciones tienen mucho sentido. Desafortunadamente, ninguno funcionó para mí como se esperaba. En lugar de tratar de molestarlo, decidí solucionar el problema:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name


0

Ninguno de estos funcionó para mí en SSIS v18.0, por lo que seguiría haciendo algo como esto:

WHERE CHARINDEX('_', thingyoursearching) < 1

... donde estoy tratando de ignorar las cadenas con un guión bajo en ellas. Si quieres encontrar cosas que tienen un guión bajo, solo dale la vuelta:

WHERE CHARINDEX('_', thingyoursearching) > 0

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.