Heim > Datenbank > MySQL-Tutorial > Wie verbinde ich Tabellen mit einer LIKE-Bedingung für Teilübereinstimmungen?

Wie verbinde ich Tabellen mit einer LIKE-Bedingung für Teilübereinstimmungen?

Patricia Arquette
Freigeben: 2024-10-31 17:59:00
Original
1089 Leute haben es durchsucht

How to Join Tables with a LIKE Condition for Partial Matches?

Tabellen mit einer LIKE-Bedingung verbinden

Beim Abfragen von Daten aus mehreren Tabellen ist es oft notwendig, diese anhand bestimmter Kriterien zu verbinden. Eine häufige Anforderung besteht darin, übereinstimmende Zeilen abzurufen, bei denen eine Spalte aus einer Tabelle einen Wert enthält, der genau oder teilweise mit einer Spalte aus einer anderen Tabelle übereinstimmt. Dieses Szenario wird durch die Verwendung des LIKE-Operators in Verbindung mit einer JOIN-Anweisung gelöst.

Verwendung von INSTR

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON INSTR(b.column, a.column) > 0;</code>
Nach dem Login kopieren

Die INSTR-Funktion prüft, ob der Wert in b.column den Wert in a enthält. Spalte, unabhängig von Zeichen davor oder danach.

Verwendung von LIKE

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON b.column LIKE '%'+ a.column +'%'</code>
Nach dem Login kopieren

Der LIKE-Operator führt einen Mustervergleich durch, sodass Platzhalter (*) eine beliebige Anzahl vorangehender oder nachfolgender Zeichen darstellen können . In diesem Fall ist das Muster %a.column% und stellt eine Übereinstimmung sicher, wenn b.column irgendwo innerhalb seines Werts a.column enthält.

Verwendung von LIKE mit CONCAT

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Nach dem Login kopieren

Ähnlich wie Im vorherigen Beispiel verwendet diese Technik die CONCAT-Funktion, um das Muster dynamisch zu erstellen. Es erzielt das gleiche Ergebnis wie die vorherige LIKE-Abfrage.

Groß- und Kleinschreibung

Um Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung zu gewährleisten, empfiehlt es sich, die Spaltenwerte vor der Verknüpfung in Großbuchstaben umzuwandeln.

<code class="sql">SELECT *
FROM (SELECT UPPER(a.column) AS upper_a
       FROM TABLE_A) a
JOIN (SELECT UPPER(b.column) AS upper_b
       FROM TABLE_B) b ON INSTR(upper_b, upper_a) > 0;</code>
Nach dem Login kopieren

Effizienzüberlegungen

Die effizienteste Methode zum JOINen von Tabellen mit einer LIKE-Bedingung hängt von der jeweiligen Datenbank und dem Verhalten des Abfrageoptimierers ab. Es wird empfohlen, die Funktion EXPLAIN PLAN zu verwenden, um den optimalsten Ausführungspfad zu ermitteln.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Tabellen mit einer LIKE-Bedingung für Teilübereinstimmungen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage