Verknüpfen von Tabellen mit LIKE in SQL
Beim Durchführen einer Verknüpfung kann es vorkommen, dass die Übereinstimmungsbedingung einen teilweisen Zeichenfolgenabgleich mit LIKE erfordert Operator. Dabei wird eine Spalte in einer Tabelle mit einer Spalte in einer anderen Tabelle abgeglichen, wobei den entsprechenden Werten Zeichen vorangestellt oder nachgestellt werden können.
Um dieses Problem zu beheben, können Sie mehrere Ansätze anwenden:
Verwenden von INSTR:
Diese Methode nutzt die INSTR-Funktion, die prüft, ob ein Teilstring innerhalb einer Zeichenfolge vorhanden ist.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>
Verwenden von LIKE:
Alternativ können Sie den LIKE-Operator mit Platzhaltern % verwenden, um eine beliebige Anzahl von Zeichen abzugleichen.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>
Verwendung von LIKE mit CONCAT:
Andere Bei dieser Technik werden die %-Platzhalter mithilfe der CONCAT-Funktion mit dem Spaltenwert verkettet.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Groß-/Kleinschreibung wird nicht berücksichtigt:
In allen Fällen wird empfohlen, die Spalte zu konvertieren Werte vor dem Vergleich in Großbuchstaben umwandeln, um eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung zu gewährleisten.
<code class="sql">SELECT * FROM (SELECT UPPER(a.column) 'ua' FROM TABLE a) a JOIN (SELECT UPPER(b.column) 'ub' FROM TABLE b) b ON INSTR(b.ub, a.ua) > 0</code>
Die Wahl der Methode hängt von Faktoren wie Effizienz und Datenbankkompatibilität ab. Konsultieren Sie die EXPLAIN-Planausgabe, um den optimalen Ansatz zu ermitteln. Beachten Sie, dass die JOIN-Syntax der entsprechenden WHERE-Klausel entspricht.
Das obige ist der detaillierte Inhalt vonWie führe ich einen teilweisen String-Abgleich in SQL-Joins mit LIKE durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!