如何加入?如果文本包含此内容,您需要做什么?

4
我有两个表,假设表A有10行,表B有100行,我想要进行连接操作,但匹配条件必须是“类似于”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              |
+-------+------------------+

你的代码是正确的,适用于支持CONCAT()函数的任何数据库。也许Hana SQL有特定的限制。 - Gordon Linoff
从你的问题中并不清楚。你是想根据表内容还是实际字段名称进行连接? - Michaël Roy
2个回答

4
HANA CONCAT 文档 中可以看出,CONCAT() 只接受两个参数,而非三个或更多。您可以通过嵌套两次 CONCAT() 来解决此问题:
SELECT *
FROM TABLE_a JOIN TABLE_b
    ON b.column LIKE CONCAT('%', CONCAT(a.column, '%'));

0
   SELECT a.employee_id
       FROM employees a
         JOIN departments b
           ON a.department_id LIKE '%'
             ||a.department_id
             || '%';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接