Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como usar um like com uma junção no sql?


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

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

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

Lembre-se de que, em todas as opções, você provavelmente desejará direcionar os valores da coluna para maiúsculas ANTES de comparar para garantir que você obtenha correspondências sem se preocupar com a diferenciação de maiúsculas e minúsculas:
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

O mais eficiente dependerá, em última análise, do plano EXPLAIN saída.

JOIN cláusulas são idênticas a escrever WHERE cláusulas. O JOIN A sintaxe também é chamada de ANSI JOINs porque eles foram padronizados. JOINs não ANSI se parecem com:
SELECT *
  FROM TABLE a,
       TABLE b
 WHERE INSTR(b.column, a.column) > 0

Não vou me preocupar com um exemplo de LEFT JOIN não ANSI. O benefício da sintaxe ANSI JOIN é que ela separa o que está unindo as tabelas do que realmente está acontecendo no WHERE cláusula.