Как присоединиться, если текст содержит
У меня есть 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
|| '%';