sql >> Databáze >  >> RDS >> Mysql

jak použít lajk s připojením v SQL?

Pomocí INSTR :

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

Pomocí LIKE:

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

Pomocí LIKE a CONCAT:

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

Mějte na paměti, že ve všech možnostech budete pravděpodobně chtít PŘED porovnáním nastavit hodnoty sloupců na velká písmena, abyste měli jistotu, že získáte shody bez ohledu na rozlišování malých a velkých písmen:

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

Nejúčinnější bude nakonec záviset na plánu EXPLAIN výstup.

JOIN klauzule jsou totožné s psaním WHERE doložky. JOIN syntaxe se také označuje jako ANSI JOIN, protože byly standardizovány. JOINy ​​bez ANSI vypadají takto:

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

Nebudu se obtěžovat příkladem non-ANSI LEFT JOIN. Výhodou syntaxe ANSI JOIN je, že odděluje to, co spojuje tabulky dohromady, od toho, co se skutečně děje v WHERE doložka.



  1. Jak použít řetězec PHP v dotazu LIKE mySQL?

  2. Je Microsoft Access snadné se naučit?

  3. Problém s oprávněními v SSMS:Oprávnění SELECT bylo odepřeno u objektu 'extended_properties', databáze 'mssqlsystem_resource', ... Chyba 229)

  4. Základní monitorování PostgreSQL – část 1