2011-11-09 8 views

Respuesta

73
SELECT ... WHERE stuff LIKE 'itunes%'; 

Aquí % sirve como un carácter comodín, por lo que este podría coincidir con las filas con el stuff campo igual a cualquiera de itunes, itunesfoo, itunes1, ...

Más Info: SQL LIKE Operator en W3Schools.

+4

¿Qué pasa si en lugar de 'utilización marcador de posición itunes'? ¿Es correcto 'SELECT ... WHERE cosas como?'% '; ' – user2118559

+2

¿Qué indica el signo%? – Skynet

+3

@Skynet,% es un comodín que coincide con un número arbitrario de caracteres (incluidos cero caracteres). Por lo tanto, el ejemplo coincidiría con itunesstore, itunesUsername y itunes. MySQL docs aquí, ¡es difícil buscar en Google%! https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html – georgiecasey

7

añadir el símbolo de intercalación, que representa el principio de la cadena:

SELECT stuff REGEXP '^itunes' as is_itunes; 

Sin embargo, LIKE 'itunes%' según lo sugerido por Marc debería ser mucho más rápido, especialmente si sus índices están configurados correctamente.

4

Para un campo indexado es mucho mejor que hacer:

select ... where stuff >='itunes' AND stuff < 'itunet'

Esto no va a crear un escaneo completo de tabla, y utilizar el índice.

+0

esto parece ser el camino a seguir para un prefijo de cadena conocido. ¿Alguien más puede comentar sobre el rendimiento, especialmente con una gran mesa? – aaronbauman

+0

esto parece una reliquia de mysql v3.23 días cuando todo lo que tenía era myisam –

2
SELECT ... WHERE LEFT(stuff, 6) = 'itunes'; 
0
SELECT ... WHERE stuff REGEXP '[[:<:]]itunes'; 
+0

otro anser sin explicaciones. –

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la opinión] (/ reseña/mensajes de baja calidad/18145859) – fredrik

Cuestiones relacionadas