Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment utiliser un like avec une jointure en sql?

Utilisation de INSTR :

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

Utiliser COMME :

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

Utiliser LIKE, avec CONCAT :

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

N'oubliez pas que dans toutes les options, vous souhaiterez probablement mettre les valeurs de colonne en majuscules AVANT de comparer pour vous assurer d'obtenir des correspondances sans vous soucier de la sensibilité à la casse :

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

Le plus efficace dépendra in fine du plan EXPLAIN sortie.

JOIN les clauses sont identiques à écrire WHERE clauses. Le JOIN La syntaxe est également appelée ANSI JOIN car elle a été normalisée. Les JOIN non-ANSI ressemblent à :

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

Je ne vais pas m'embêter avec un exemple non-ANSI LEFT JOIN. L'avantage de la syntaxe ANSI JOIN est qu'elle sépare ce qui joint les tables de ce qui se passe réellement dans WHERE clause.