Sql 如何连接,如果文本包含
我有两个表,比如表A有10行,表B有100行,我想执行一个连接,但匹配条件必须是A中的一列与B中的一列相似,这意味着任何东西都可以出现在B中的列之前或之后: 例如:如果A中的列是“foo”。如果B中的列是“fooblah”、“somethingfooblah”或仅仅是“foo”,则连接将匹配。我知道如何在类似标准的语句中使用通配符,但在执行联接时感到困惑。这有意义吗?谢谢 此代码不起作用:Sql 如何连接,如果文本包含,sql,join,sql-like,hana-sql-script,Sql,Join,Sql Like,Hana Sql Script,我有两个表,比如表A有10行,表B有100行,我想执行一个连接,但匹配条件必须是A中的一列与B中的一列相似,这意味着任何东西都可以出现在B中的列之前或之后: 例如:如果A中的列是“foo”。如果B中的列是“fooblah”、“somethingfooblah”或仅仅是“foo”,则连接将匹配。我知道如何在类似标准的语句中使用通配符,但在执行联接时感到困惑。这有意义吗?谢谢 此代码不起作用: SELECT * FROM TABLE a JOIN TABLE b ON b.col
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()
只接受两个参数,而不是三个或更多。您只需将两个调用嵌套到CONCAT()
,即可解决此问题:
您的代码在任何支持
CONCAT()
的数据库中都是正确的SQL。也许Hana SQL有特定的局限性。从您的问题中还不清楚。您是要在表内容上联接还是在实际字段名上联接?
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
|| '%';