Existe la discusión (casi religiosa), si debe usar LIKE o '=' para comparar cadenas en declaraciones SQL.
- ¿Hay razones para usar LIKE?
- ¿Hay razones para usar '='?
- ¿Actuación? ¿Legibilidad?
sql
comparison
guerda
fuente
fuente

LIKEy el operador de igualdad tiene diferentes propósitos, no hacen lo mismo:=es mucho más rápido, mientras queLIKEpuede interpretar comodines. Úselo=donde pueda yLIKEdonde deba.Muestra de coincidencias:
fuente
En mi pequeña experiencia:
"=" para coincidencias exactas.
"ME GUSTA" para Partidos Parciales.
fuente
Hay un par de otros trucos que Postgres ofrece para la coincidencia de cadenas (si ese es su DB):
ILIKE, que es un partido LIKE sin distinción entre mayúsculas y minúsculas:
Partidos:
Y si quieres enojarte mucho, puedes usar expresiones regulares:
Partidos:
fuente
Al igual que un aviso, el operador '=' rellenará cadenas con espacios en Transact-SQL. Entonces
'abc' = 'abc 'volverá verdadero;'abc' LIKE 'abc 'devolverá falso. En la mayoría de los casos, '=' será correcto, pero en un caso reciente mío no lo fue.Entonces, mientras '=' es más rápido, LIKE podría indicar más explícitamente sus intenciones.
http://support.microsoft.com/kb/316626
fuente
Para la coincidencia de patrones use LIKE. Para coincidencia exacta =.
fuente
LIKEse usa para la coincidencia de patrones y=se usa para la prueba de igualdad (como se defineCOLLATIONen uso).=puede usar índices, mientras que lasLIKEconsultas generalmente requieren probar cada registro en el conjunto de resultados para filtrarlo (a menos que esté utilizando la búsqueda de texto completo) para que=tenga un mejor rendimiento.fuente
LIKE hace coincidir como comodines char [*,?] En el shell
LIKE '% sufijo' - dame todo lo que termine con sufijo. No podría hacer eso con =
Depende del caso en realidad.
fuente
Hay otra razón para usar "me gusta" incluso si el rendimiento es más lento: los valores de los caracteres se convierten implícitamente en enteros en comparación, por lo que:
declarar @transid varchar (15)
si @transid! = 0
le dará un error "La conversión del valor varchar '123456789012345' desbordó una columna int".
fuente