Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie benutzt man ein Like mit einem Join in SQL?

Verwenden von INSTR :

SELECT *
  FROM TABLE a
  JOIN TABLE b ON INSTR(b.column, a.column) > 0

Verwendung von LIKE:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'

Mit LIKE, mit CONCAT:

SELECT *
  FROM TABLE a
  JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')

Beachten Sie, dass Sie bei allen Optionen wahrscheinlich die Spaltenwerte VOR dem Vergleichen in Großbuchstaben umwandeln möchten, um sicherzustellen, dass Sie Übereinstimmungen ohne Berücksichtigung der Groß-/Kleinschreibung erhalten:

SELECT *
  FROM (SELECT UPPER(a.column) 'ua'
         TABLE a) a
  JOIN (SELECT UPPER(b.column) 'ub'
         TABLE b) b ON INSTR(b.ub, a.ua) > 0

Die effizienteste hängt letztendlich vom EXPLAIN-Plan ab Ausgabe.

JOIN Klauseln sind identisch mit dem Schreiben von WHERE Klauseln. Der JOIN Syntax wird auch als ANSI JOINs bezeichnet, da sie standardisiert wurde. Nicht-ANSI-JOINs sehen folgendermaßen aus:

SELECT *
  FROM TABLE a,
       TABLE b
 WHERE INSTR(b.column, a.column) > 0

Ich werde mich nicht mit einem Nicht-ANSI-LEFT-JOIN-Beispiel beschäftigen. Der Vorteil der ANSI JOIN-Syntax besteht darin, dass sie das Zusammenfügen von Tabellen von dem trennt, was tatsächlich in WHERE passiert Klausel.