Mysql
 sql >> база данни >  >> RDS >> Mysql

как да използвам like с присъединяване в sql?

Използване на INSTR :

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

Използване на LIKE:

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

Използване на LIKE, с CONCAT:

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

Имайте предвид, че във всички опции вероятно ще искате да зададете стойностите на колоните в главни букви ПРЕДИ да ги сравните, за да сте сигурни, че получавате съвпадения, без да се притеснявате за чувствителността на главни и малки букви:

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

Най-ефективният ще зависи в крайна сметка от плана EXPLAIN изход.

JOIN клаузите са идентични с писането на WHERE клаузи. JOIN синтаксисът се нарича още ANSI JOIN, тъй като са стандартизирани. Не-ANSI JOIN изглеждат така:

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

Няма да се занимавам с пример за Non-ANSI LEFT JOIN. Предимството на синтаксиса ANSI JOIN е, че разделя това, което свързва таблиците заедно от това, което всъщност се случва в WHERE клауза.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL UPDATE с подзаявка, която препраща към същата таблица в MySQL

  2. PHP към MySQL SSL връзки

  3. Защо jdbcTemplate.batchUpdate() на Spring е толкова бавен?

  4. SELECT INTO OUTFILE не може да записва във файл

  5. Как да се свържа с MySQL с помощта на UTF8 в рамките на perl скрипт?