Как присоединиться, если текст содержит

У меня есть 2 таблицы, скажем, таблица A имеет 10 строк, а таблица B имеет 100 строк, и я хочу выполнить объединение, но условие соответствия должно быть таким, чтобы столбец из A 'походил' на столбец из B, означая, что все может прийти до или после столбца в B:

Например: если столбец в A 'foo'. Тогда объединение будет совпадать, если столбец в B будет либо: 'fooblah','thingfooblah ', либо просто' foo '. Я знаю, как использовать подстановочные знаки в стандартном утверждении типа like, но я запутался, когда выполняю соединение. Имеет ли это смысл? Благодарю.

Этот код не работает:

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

Пример:

Table A
+-------+
| MYCOL | 
+-------+
| foo   |
| foo   |
| bar   |
| bbb   |
| bar   |
+-------+

Table B
+------------------+
| MYCOL            |
+------------------+
| fooblah          |
| somethingfooblah |
| foo              |
| barblah          |
| somethingbarblah |
| bar              |
+------------------+

Result:
+-------+------------------+
| MYCOL | MYCOL            |
+-------+------------------+
| foo   | fooblah          |
| foo   | somethingfooblah |
| foo   | foo              |
| --    | test             |
| bar   | somethingbarblah |
| bar   | bar              |
+-------+------------------+

2 ответа

Из документации HANA для CONCAT видно, что CONCAT() принимает только два параметра, а не три или более. Вы можете обойти это, просто вложив два вызова CONCAT():

SELECT *
FROM TABLE_a JOIN TABLE_b
    ON b.column LIKE CONCAT('%', CONCAT(a.column, '%'));
   SELECT a.employee_id
       FROM employees a
         JOIN departments b
           ON a.department_id LIKE '%'
             ||a.department_id
             || '%';
Другие вопросы по тегам