Durchführen eines LIKE-Joins in SQL
Beim Abgleichen von Werten zwischen zwei Tabellen mithilfe eines Joins kann es vorkommen, dass eine Spalte aus einer Tabelle muss mit einem beliebigen Teil einer Spalte aus einer anderen Tabelle übereinstimmen. Dies wird oft durch den LIKE-Operator in der Join-Bedingung erreicht.
Angenommen, Sie haben zwei Tabellen, Tabelle A und Tabelle B, und Sie möchten sie unter einer Bedingung verknüpfen, bei der SpalteA in Tabelle A „like“ ist. SpalteB in Tabelle B. Dies bedeutet, dass die Übereinstimmung den vollständigen Wert in SpalteB oder Zeichen davor oder danach umfassen könnte.
Verwenden von INSTR:
Eine Methode ist die Verwendung die INSTR()-Funktion in der Join-Bedingung:
SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0
Verwenden von LIKE:
Eine andere Möglichkeit besteht darin, den LIKE-Operator mit Platzhaltern zu verwenden:
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%' A.columnA '%'
Verwenden von LIKE mit CONCAT:
Sie können die Platzhaltersymbole auch mit der Spalte verketten Wert mit der Funktion CONCAT():
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')
Großbuchstabenkonvertierung:
Um sicherzustellen, dass Übereinstimmungen nicht berücksichtigt werden, Es wird empfohlen, die Spaltenwerte vor dem Vergleich in Großbuchstaben umzuwandeln:
SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0
Effizienzüberlegungen:
Die Effizienz dieser Methoden kann je nach den spezifischen Datenbank- und Tabellenstrukturen variieren. Es ist ratsam, die Ausgabe des EXPLAIN-Plans zu überprüfen, um den optimalsten Ansatz zu ermitteln.
ANSI vs. Nicht-ANSI-JOINs:
ANSI-JOINs folgen einer standardisierten Syntax, während Nicht-ANSI-JOINs einer standardisierten Syntax folgen. ANSI JOINs verwenden eine traditionellere Syntax. In diesem Fall entspricht die JOIN-Klausel der WHERE-Klausel in einem Nicht-ANSI-JOIN:
SELECT *
FROM TABLE A,
TABLE B
WHERE INSTR(B.columnB, A.columnA) > 0
Die Verwendung von ANSI JOINs bietet den Vorteil, dass die Join-Bedingung von der Filterbedingung in der WHERE-Klausel getrennt wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3