我有2个表,比如表A有10行而表B有100行我想要执行连接,但匹配条件必须是A'中的列就像'来自B的列意味着任何事情都可以在B之前或之后出现:
例如:如果A中的列是'foo'。如果B中的列是:'fooblah','somethingfooblah'或者只是'foo',则连接将匹配。我知道如何在标准的语句中使用通配符,但在进行连接时很困惑。这有意义吗?感谢。
本规范不起作用:
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 |
+-------+------------------+
答案 0 :(得分:1)
从HANA documenation for CONCAT开始,CONCAT()
只显示两个参数,而不是三个或更多参数。您可以通过将两个调用嵌套到CONCAT()
来解决此问题:
SELECT *
FROM TABLE_a JOIN TABLE_b
ON b.column LIKE CONCAT('%', CONCAT(a.column, '%'));
答案 1 :(得分:0)
SELECT a.employee_id
FROM employees a
JOIN departments b
ON a.department_id LIKE '%'
||a.department_id
|| '%';