variable operador not escape ejemplos comodines busqueda sql wildcard sql-like

operador - sql like comodines



¿SQL LIKE sin comodines lo mismo que ''=''? (3)

Sé que esta es una pregunta bastante básica, y creo que sé la respuesta ... pero me gustaría confirmarlo.

¿Estas consultas son realmente equivalentes?

SELECT * FROM FOO WHERE BAR LIKE ''X'' SELECT * FROM FOO WHERE BAR =''X''

Tal vez hay una sobrecarga de rendimiento en el uso como sin comodines?

Tengo una aplicación que opcionalmente usa LIKE y comodines. Actualmente, el SP hace lo mismo y agrega los comodines. Estoy pensando en actualizar la consulta para utilizarla pero la aplicación agrega los comodines según sea necesario.


Cualquier buen optimizador reduciría la primera expresión a la segunda.


Como dice @ocdecio, si el optimizador es lo suficientemente inteligente no debería haber diferencia, pero si quiere asegurarse de lo que está sucediendo detrás de escena, debe comparar los dos planes de ejecución de la consulta.


Respuesta original por Matt Whitfield de aquí

Hay una diferencia entre = y LIKE . Cuando realiza comparaciones de cadenas utilizando LIKE , todos los caracteres en la cadena de patrones son significativos. Esto incluye espacios iniciales o finales.

Entonces, si tiene una columna que es char o nchar y no nvarchar o varchar , habrá diferentes resultados debido a espacios finales.

Pequeño ejemplo para reproducir este comportamiento:

CREATE TABLE #temp (nam [varchar](MAX)) INSERT INTO [#temp] ([nam]) VALUES (''hello'') INSERT INTO [#temp] ([nam]) VALUES (''hello '') SELECT * FROM #temp WHERE [nam] = ''hello '' SELECT * FROM #temp WHERE [nam] LIKE ''hello ''