Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So schreiben Sie eine MySQL-Abfrage, bei der A ( a oder b ) enthält

Zwei Optionen:

  1. Verwenden Sie das LIKE Schlüsselwort, zusammen mit Prozentzeichen in der Zeichenfolge

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

    (Hinweis:Wenn Ihre Suchzeichenfolge Prozentzeichen enthält, müssen Sie diese maskieren)

  2. Wenn Sie nach einer komplexeren Kombination von Zeichenfolgen suchen, als Sie in Ihrem Beispiel angegeben haben, können Sie reguläre Ausdrücke (Regex) verwenden:

    Weitere Informationen zur Verwendung finden Sie im MySQL-Handbuch:http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

Davon mit LIKE ist die gebräuchlichste Lösung - es ist Standard-SQL und wird allgemein verwendet. Regex wird seltener verwendet, ist aber viel leistungsfähiger.

Beachten Sie, dass Sie sich unabhängig von der gewählten Option der möglichen Auswirkungen auf die Leistung bewusst sein müssen. Die Suche nach Teilzeichenfolgen wie dieser bedeutet, dass die Abfrage die gesamte Tabelle durchsuchen muss. Wenn Sie eine große Tabelle haben, könnte dies zu einer sehr langsamen Abfrage führen, und keine Indizierung wird helfen.

Wenn dies ein Problem für Sie ist und Sie immer wieder nach denselben Dingen suchen müssen, ziehen Sie es vielleicht vor, der Tabelle ein Flag-Feld hinzuzufügen, das angibt, dass das Zeichenfolgenfeld die relevanten Unter- Saiten. Wenn Sie dieses Flag-Feld beim Einfügen oder Aktualisieren eines Datensatzes aktuell halten, können Sie das Flag einfach abfragen, wenn Sie suchen möchten. Dies kann indiziert werden und würde Ihre Abfrage viel schneller machen. Ob sich der Aufwand lohnt, liegt an Ihnen, es hängt davon ab, wie schlecht die Performance mit LIKE ist .