sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué el uso de un guión bajo en un filtro LIKE me da todos los resultados?

Modifica tu WHERE condición como esta:

WHERE mycolumn LIKE '%\_%' ESCAPE '\'

Esta es una de las formas en que Oracle admite caracteres de escape. Aquí se define el carácter de escape con escape palabra clave. Para obtener más información, consulte este enlace en Oracle Docs.

El '_' y '%' son comodines en un LIKE instrucción operada en SQL.

El _ El personaje busca la presencia de (cualquiera) un solo personaje. Si busca por columnName LIKE '_abc' , le dará resultados con filas que tienen 'aabc' , 'xabc' , '1abc' , '#abc' pero NO 'abc' , 'abcc' , 'xabcd' y así sucesivamente.

El '%' El carácter se utiliza para hacer coincidir 0 o más caracteres. Eso significa que si busca por columnName LIKE '%abc' , le dará el resultado de tener 'abc' , 'aabc' , 'xyzabc' y así sucesivamente, pero no 'xyzabcd' , 'xabcdd' y cualquier otra cadena que no termine con 'abc' .

En tu caso has buscado por '%_%' . Esto dará todas las filas con esa columna que tiene uno o más caracteres, es decir, cualquier carácter, como su valor. Es por eso que está obteniendo todas las filas aunque no hay _ en los valores de su columna.