Соедините две таблицы на поле. - PullRequest
0 голосов
/ 13 марта 2020

Как объединить две таблицы, если поле содержит другое поле? Пример:

В таблице AI есть поле с данными '000;111;222', а в таблице BI есть поле с данными '111'.

Я хочу присоединиться так:

select * from A join B on A.field contains B.field

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

Вы можете сделать:

select a.*, b.*
from a 
inner join b on b.field = any(string_to_array(a.field, ';'))

Условие соединения превращает a.field в массив, а затем проверяет, содержит ли оно b.field.

1 голос
/ 14 марта 2020

Ну, возможно, вы задаете string_to_array неверные параметры. В качестве альтернативы вы можете использовать функцию POSITION, чтобы найти, есть ли совпадение sbustring.

with table_a (acol) as ( values('000;111;222'),('000;xxx;222') )
   , table_b (bcol) as ( values ('111'),('xxx'),('000'),('123') )
select * 
  from table_a
  join table_b on POSITION(bcol in acol) > 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...