Skip to content

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

Lösung:

Zwei Optionen:

  1. Verwenden Sie die 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 weniger häufig verwendet, ist aber viel leistungsfähiger.

Beachten Sie, dass Sie sich bei jeder Option der möglichen Auswirkungen auf die Leistung bewusst sein müssen. Die Suche nach solchen Teilzeichenfolgen bedeutet, dass die Abfrage die gesamte Tabelle durchsuchen muss. Wenn Sie eine große Tabelle haben, kann 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 den gleichen Dingen suchen müssen, ziehen Sie es vielleicht vor, der Tabelle ein Flag-Feld hinzuzufügen, das angibt, dass das Zeichenfolgenfeld die relevanten Unterelemente enthält. Saiten. Wenn Sie dieses Flag-Feld beim Einfügen oder Aktualisieren eines Datensatzes auf dem neuesten Stand 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 dafür lohnt, liegt an Ihnen, es hängt davon ab, wie schlecht die Leistung ist LIKE.

Sie können Ihre Anfrage wie folgt schreiben:

SELECT * FROM MyTable WHERE (A LIKE '%text1%' OR A LIKE '%text2%')

Die % ist ein Platzhalter, was bedeutet, dass nach allen Zeilen gesucht wird, in denen Spalte A entweder Text 1 oder text2

Click to rate this post!
[Total: 0 Average: 0]


Tags : /

Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.