如果文本包含,如何加入

时间:2017-06-11 14:57:26

标签: sql join sql-like hana-sql-script

我有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              |
+-------+------------------+

2 个答案:

答案 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
             || '%';