Mientras solucionaba un problema de programación hoy, noté que no puede usar una búsqueda LIKE para columnas de cadena que contengan caracteres especiales como% o _ sin usar una sintaxis especial. Comprender el problema solo tomó unos minutos, pero recordar la sintaxis siempre es más fácil si escribe sobre él.
Entonces sí, esta publicación es solo para mi beneficio. Espero que esto ayude a alguien más también.
Suponga que desea buscar campos que contengan el texto «100%», luego crea esta consulta:
SELECT * FROM tablename DONDE fieldname LIKE ‘% 100 %%’
En lugar de lo que deseaba, obtendrá todas las líneas que contienen «100», así como las líneas que contienen «100%».
El problema aquí es que SQL Server usa el signo de porcentaje, el subrayado y los corchetes como caracteres especiales. Simplemente no puede usarlos como un solo carácter en una consulta LIKE sin escapar de ellos.
Escape de escuadra
Puede rodear el% o _ entre corchetes para indicarle a SQL Server que el carácter dentro es un carácter regular.
SELECCIONAR * DESDE el nombre de la tabla DONDE el nombre del campo LIKE ‘% 100[%]% ‘
Sintaxis ESCAPE de T-SQL
También puede agregar el operador ESCAPE a su consulta y agregar un carácter antes del valor del que desea escapar.
SELECT * FROM tablename DONDE fieldname LIKE ‘% 100 %%’ ESCAPE »
La parte ESCAPE » de la consulta le dice al motor SQL que interprete el carácter después de como un carácter literal en lugar de un carácter comodín.
Personalmente, el segundo método me parece más manejable y también puedes usarlo para escapar de un gancho.