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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON INSTR(b.column, a.column) > 0;</code>
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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE '%'+ a.column +'%'</code>
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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Ä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.
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>
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!