Dos opciones:
utilizar la palabra clave LIKE
, junto con signos de porcentaje en la cadena
select * from table where field like '%a%' or field like '%b%'.
(nota: Si la cadena de búsqueda contiene signos de porcentaje, que necesita para escapar de ellos)
Si' re buscando más una compleja combinación de cuerdas que ha especificado en su ejemplo, usted podría expresiones regulares (regex):
Consulte el manual de MySQL para más información sobre cómo utilizarlos: http://dev.mysql.com/doc/refman/5.1/en/regexp.html
De estos, usar LIKE
es la solución más habitual: es SQL estándar, y de uso común. Regex se usa con menos frecuencia pero es mucho más poderoso.
Tenga en cuenta que independientemente de la opción que elija, debe tener en cuenta las posibles implicaciones de rendimiento. La búsqueda de sub-cadenas como esta significará que la consulta tendrá que escanear toda la tabla. Si tiene una tabla grande, esto podría generar una consulta muy lenta y ninguna cantidad de indexación ayudará.
Si esto es un problema para usted, y tendrá que buscar las mismas cosas una y otra vez, puede preferir hacer algo como agregar un campo de indicador a la tabla que especifique que el campo de cadena contiene las subcadenas relevantes Si mantiene este campo de indicador actualizado cuando inserta la actualización de un registro, puede simplemente consultar el indicador cuando desee buscar. Esto puede ser indexado, y haría su consulta mucho más rápida. Si vale la pena el esfuerzo de hacer eso depende de usted, dependerá de qué tan malo sea el rendimiento utilizando LIKE
.
2da opción ayudada. ¡Gracias! – Hao
Solo tenga cuidado al usar la instrucción 'o'. Lo mejor es usar paréntesis a su alrededor, como 'select * from table where (campo como '% a%' o campo como '% b%')'. Si tiene otras cláusulas 'AND' su consulta podría actuar como' SELECT * FROM TABLE WHERE (A = 1 Y B = 2 Y C = 3) O (D = 4) 'que generalmente no es lo que quiere. – Maximus