Heim > Datenbank > MySQL-Tutorial > Wie kann ich effizient nach mehreren Zeichenfolgen in einer MySQL-Spalte suchen?

Wie kann ich effizient nach mehreren Zeichenfolgen in einer MySQL-Spalte suchen?

DDD
Freigeben: 2025-01-11 19:41:42
Original
371 Leute haben es durchsucht

How Can I Efficiently Search for Multiple Strings Within a MySQL Column?

Verwenden Sie die Funktion find_in_set von MySQL, um mehrere Zeichenfolgen zu finden

Mit der Funktion find_in_set() von MySQL können Sie nach einer bestimmten Zeichenfolge innerhalb einer Reihe von Zeichenfolgen suchen, die in einer Spalte gespeichert sind. Es kann jedoch nur mit einer einzigen Suchzeichenfolge gesucht werden.

Herausforderung: Suche mit mehreren Zeichenfolgen

Es kann vorkommen, dass Sie in einer Reihe von Zeichenfolgen nach mehreren Zeichenfolgen suchen müssen. Beispielsweise möchten Sie möglicherweise überprüfen, ob ein Kunde ein bestimmtes Produkt gekauft hat, das zu einer bestimmten Kategorie gehört. In diesem Fall reicht es nicht aus, nur find_in_set() zu verwenden.

Tipp zur Simulation von find_in_set() zur Implementierung einer Suche mit mehreren Zeichenfolgen

Es gibt eine Problemumgehung, um eine Suche mit mehreren Zeichenfolgen mithilfe von find_in_set() zu simulieren:

  1. Fügen Sie Kommas am Anfang und Ende von Spalten hinzu, die Zeichenfolgensätze enthalten. Dadurch wird sichergestellt, dass die Menge von Kommas umgeben ist.
  2. Verwenden Sie reguläre Ausdrücke (REGEX), um nach Mustern zu suchen, die Suchzeichenfolgen enthalten, die durch Pipe-Symbole (|) getrennt sind. Das Pipe-Zeichen stellt ein logisches ODER dar, das mit einer beliebigen Zeichenfolge übereinstimmt.

Beschreibung des regulären Ausdrucks:

  • "," – entspricht einem Komma am Anfang einer Sammlung.
  • setcolumn – Der Name der Spalte, die den Satz von Zeichenfolgen enthält.
  • "," – entspricht dem Komma am Ende des Satzes.
  • ,“ – entspricht einem Komma gefolgt von einem doppelten Anführungszeichen.
  • (val1|val2|val3) – Durch Pipes getrennte Suchzeichenfolge, in Klammern eingeschlossen.
  • ,“ – entspricht einem Komma gefolgt von einem doppelten Anführungszeichen.

Beispiel:

Bedenken Sie die folgende Abfrage:

<code class="language-sql">SELECT *
FROM table
WHERE CONCAT(",", `product_set`, ",") REGEXP ",(electronics|clothing|accessories),";</code>
Nach dem Login kopieren

In dieser Abfrage enthält die Spalte „product_set“ eine durch Kommas getrennte Liste der vom Kunden gekauften Produkte. Der REGEXP-Ausdruck prüft, ob die Sammlung eine dieser drei Suchzeichenfolgen enthält: „Elektronik“, „Kleidung“ oder „Zubehör“.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient nach mehreren Zeichenfolgen in einer MySQL-Spalte suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage