sql >> Database teknologi >  >> RDS >> Mysql

hvordan bruger man et like med en join i sql?

Brug af INSTR :

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

Bruger LIKE:

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

Bruger LIKE, med CONCAT:

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

Vær opmærksom på, at du i alle muligheder sandsynligvis vil flytte kolonneværdierne til store bogstaver, FØR du sammenligner for at sikre, at du får matches uden bekymring for følsomhed over for store og små bogstaver:

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

Den mest effektive vil i sidste ende afhænge af EXPLAIN planen output.

JOIN klausuler er identiske med at skrive WHERE klausuler. JOIN syntaks omtales også som ANSI JOINs, fordi de var standardiserede. Ikke-ANSI JOINs ser ud som:

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

Jeg har ikke tænkt mig at bøvle med et ikke-ANSI LEFT JOIN eksempel. Fordelen ved ANSI JOIN-syntaksen er, at den adskiller det, der forbinder tabeller fra det, der faktisk sker i WHERE klausul.



  1. Hvordan finder man de privilegier og roller, der er tildelt en bruger i Oracle?

  2. Opbygning af en tabelafhængighedsgraf med en rekursiv forespørgsel

  3. Sådan opretter du fjernforbindelse til Oracle 11g-databasen

  4. Java:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Kunne ikke oprette forbindelse til databaseserveren