частичное совпадение с использованием записей таблицы - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть таблица со следующими значениями:

Имя таблицы - title

id   val
1    director
1    developer
1    executive

У меня есть другая таблица - table2

id  user   title_val
1   abc    adirector
2   abc1   bdeveloperc
3   abc2   aexecutive

Я хочу создать запрос sql, используя приведенную выше таблицу - table2 для частичного сопоставления, например:

select * 
from table2 
where title_val like '%director%' 
   OR title like '%developer%' 
   OR title like '%executive%';

Я знаю, что могу сделать - select * from table2 where title in (select val from title), но это будет точное совпадение, а НЕ частичное совпадение .

Я хочу использовать записи таблицы из заголовка. У меня есть тысячи названий. Есть ли какой-нибудь SQL запрос, который может помочь?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2020

Вы можете объединить все заголовки в массив, а затем использовать LIKE с оператором ANY:

select *
from table2
where title_val like any( array(select concat('%', val, '%') from title) )

Поскольку вы не используете Postgres, вместо него можно использовать подзапрос

select *
from table2 t2
where exists (select *
              from title tt
              where t2.title_val like concat('%', tt.val, '%') )
0 голосов
/ 23 апреля 2020

Может быть, это может работать на вашем столе

select * from title where val like '%director%' OR val like '%developer%' or val like '%executive%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...