sql >> Database >  >> RDS >> Mysql

hoe gebruik je een like met een join in sql?

INSTR gebruiken :

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

LIKE gebruiken:

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

LIKE gebruiken, met CONCAT:

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

Houd er rekening mee dat u bij alle opties waarschijnlijk de kolomwaarden in hoofdletters wilt zetten VOORDAT u vergelijkt om er zeker van te zijn dat u overeenkomsten krijgt zonder dat u zich zorgen hoeft te maken over hoofdlettergevoeligheid:

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

De meest efficiënte zal uiteindelijk afhangen van het EXPLAIN plan uitvoer.

JOIN clausules zijn identiek aan het schrijven van WHERE clausules. De JOIN syntaxis wordt ook wel ANSI JOINs genoemd omdat ze gestandaardiseerd waren. Niet-ANSI JOIN's zien er als volgt uit:

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

Ik ga me niet bezighouden met een voorbeeld van een niet-ANSI LEFT JOIN. Het voordeel van de ANSI JOIN-syntaxis is dat het scheidt wat tabellen samenvoegt van wat er feitelijk gebeurt in de WHERE clausule.



  1. Rijen overslaan die beperkingen schenden bij het invoegen van gegevens in SQLite

  2. Tijdelijke tabellen vergelijken voor PostgreSQL en Oracle GTT

  3. Hoe vergrendel ik een InnoDB-rij die nog niet bestaat?

  4. 6 functies om de dag, maand en jaar van een datum in SQL Server te krijgen