uso son signo segunda porcentaje not los letra cuales comodines coincidencias caracter cadena buscar sql comparison

son - Use ''='' o LIKE para comparar cadenas en SQL?



sql signo porcentaje (9)

Está la discusión (casi religiosa), si debe usar LIKE o ''='' para comparar cadenas en sentencias de SQL.

  • ¿Hay razones para usar LIKE?
  • ¿Hay razones para usar ''=''?
  • ¿Actuación? ¿Legibilidad?

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 fue así.

Entonces, si ''='' es más rápido, LIKE podría indicar más explícitamente sus intenciones.

http://support.microsoft.com/kb/316626


En mi pequeña experiencia:

"=" para coincidencias exactas.

"LIKE" para partys parciales.


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 cuando se comparan, por lo que:

declarar @transid varchar (15)

if @transid! = 0

le dará un error "La conversión del valor varchar ''123456789012345'' desbordada una columna int".


Hay un par de otros trucos que Postgres ofrece para la coincidencia de cadenas (si ese es tu DB):

ILIKE, que es una coincidencia LIKE case insensible:

select * from people where name ilike ''JOHN''

Partidos:

  • John
  • John
  • JOHN

Y si quieres ponerte realmente enojado puedes usar expresiones regulares:

select * from people where name ~ ''John.*''

Partidos:

  • John
  • Johnathon
  • Johnny

LIKE hace coincidir como comodines char [*,?] En el shell
COMO ''% sufijo'': dame todo lo que termine con sufijo. No podrías hacer eso con =
Depende del caso en realidad.


Para la coincidencia de patrones, use LIKE. Para coincidencia exacta =.


Para ver la diferencia de rendimiento, intente esto:

SELECT count(*) FROM master..sysobjects as A JOIN tempdb..sysobjects as B on A.name = B.name SELECT count(*) FROM master..sysobjects as A JOIN tempdb..sysobjects as B on A.name LIKE B.name

Comparar cadenas con ''='' es mucho más rápido.


LIKE se utiliza para la coincidencia de patrones y = se usa para la prueba de igualdad (como se define en la COLLATION en uso).

= puede usar índices mientras que las consultas LIKE generalmente requieren probar cada registro individual en el conjunto de resultados para filtrarlo (a menos que esté usando la búsqueda de texto completo) así que = tiene un mejor rendimiento.


LIKE y el operador de igualdad tienen diferentes propósitos, no hacen lo mismo: = es mucho más rápido, mientras que LIKE puede interpretar comodines. Use = donde pueda y LIKE donde sea que deba hacerlo.

SELECT * FROM user WHERE login LIKE ''Test%''; -- Matches -- TestUser1 -- TestUser2 -- TestU -- Test -- etc.