3

我有 2 个表,说表 A 有 10 行,表 B 有 100 行,我想执行连接,但匹配条件必须是 A 中的列“就像”B 中的列,这意味着任何事情都可以来在 B 列之前或之后:

例如:如果 A 中的列是 'foo'。如果 B 中的列是“fooblah”、“somethingfooblah”或只是“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              |
+-------+------------------+
4

2 回答 2

3

CONCAT 的 HANA 文档看来,CONCAT()它只需要两个参数,而不是三个或更多。您可以通过嵌套两个调用来解决此问题CONCAT()

SELECT *
FROM TABLE_a JOIN TABLE_b
    ON b.column LIKE CONCAT('%', CONCAT(a.column, '%'));
于 2017-06-11T15:03:12.307 回答
0
   SELECT a.employee_id
       FROM employees a
         JOIN departments b
           ON a.department_id LIKE '%'
             ||a.department_id
             || '%';
于 2017-06-11T16:01:54.380 回答