Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment écrire une requête MySQL où A contient ( a ou b )

Deux possibilités :

  1. Utilisez le LIKE mot-clé, ainsi que des signes de pourcentage dans la chaîne

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

    (remarque :si votre chaîne de recherche contient des signes de pourcentage, vous devrez les échapper)

  2. Si vous recherchez une combinaison de chaînes plus complexe que celle que vous avez spécifiée dans votre exemple, vous pouvez utiliser des expressions régulières (regex) :

    Consultez le manuel de MySQL pour en savoir plus sur leur utilisation :http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Parmi ceux-ci, en utilisant LIKE est la solution la plus courante - c'est du SQL standard et d'usage courant. Regex est moins couramment utilisé mais beaucoup plus puissant.

Notez que quelle que soit l'option que vous choisissez, vous devez être conscient des implications possibles sur les performances. La recherche de sous-chaînes comme celle-ci signifie que la requête devra parcourir toute la table. Si vous avez une grande table, cela pourrait rendre la requête très lente et aucune indexation ne vous aidera.

Si c'est un problème pour vous, et que vous devrez rechercher les mêmes choses encore et encore, vous préférerez peut-être faire quelque chose comme ajouter un champ d'indicateur à la table qui spécifie que le champ de chaîne contient le sous- cordes. Si vous gardez ce champ d'indicateur à jour lorsque vous insérez ou mettez à jour un enregistrement, vous pouvez simplement interroger l'indicateur lorsque vous souhaitez effectuer une recherche. Cela peut être indexé et rendrait votre requête beaucoup plus rapide. Que cela en vaille la peine, c'est à vous de décider, cela dépendra de la qualité des performances en utilisant LIKE .