Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何连接,如果文本包含_Sql_Join_Sql Like_Hana Sql Script - Fatal编程技术网

Sql 如何连接,如果文本包含

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

我有两个表,比如表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              |
+-------+------------------+
从中可以看出,
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
             || '%';