sql >> Base de Datos >  >> RDS >> Mysql

Cómo escribir una consulta MySQL donde A contiene (a o b)

Dos opciones:

  1. Usa el LIKE palabra clave, junto con signos de porcentaje en la cadena

    select * from table where field like '%a%' or field like '%b%'.
    

    (nota:si su cadena de búsqueda contiene signos de porcentaje, deberá escaparlos)

  2. Si está buscando una combinación de cadenas más compleja que la que especificó en su ejemplo, podría usar expresiones regulares (regex):

    Consulte el manual de MySQL para obtener más información sobre cómo usarlos:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

De estos, usando 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 cualquiera que sea la opción que elija, debe tener en cuenta las posibles implicaciones de rendimiento. La búsqueda de subcadenas 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 va a necesitar buscar las mismas cosas una y otra vez, puede preferir hacer algo como agregar un campo de marca a la tabla que especifica que el campo de cadena contiene el sub- campo relevante. instrumentos de cuerda. Si mantiene este campo de marca actualizado cuando inserta o actualiza un registro, simplemente puede consultar la marca cuando desee buscar. Esto se puede indexar y haría que su consulta sea mucho más rápida. Depende de usted si vale la pena el esfuerzo de hacer eso, dependerá de qué tan mal sea el rendimiento usando LIKE .