如何加入 table ON .. LIKE ... 'table.variable'

How to JOIN table ON .. LIKE ... 'table.variable'

我有两个表,我正在尝试加入它们并在 mySQL 上使用 LIKE 函数。

我的初始代码是:

select A.column
from A
join B
  on (B.column) like ('%A.column%');

然后我搜索Whosebug过去的答案,我发现我的版本没有错,同时我发现这个版本也不起作用:

select A.column 
from A
join B 
  on B.column like '%'+ A.column +'%';

最后我用了这个:

select A.CPM , B.column , A.column 
from A
join B 
  on B.column like concat('%', A.column,'%');

它奏效了。我的问题是为什么以前的版本不起作用?是因为 mySQL 版本吗?根据我的研究,语法在所有 3 个版本中都是正确的。 mySQL 的前两个结果是空白的。

第一:不行

select A.column
from A
join B
  on (B.column) like ('%A.column%');

原因:

这只是字符串文字,硬编码值

B.column LIKE '%A.column%'  

第二:不行

select A.column 
from A
join B 
  on B.column like '%'+ A.column +'%';

原因:

+ 不是用于字符串连接而是用于添加。示例:

SELECT '%' + 'a' + '%' -- result 0, mysql tries to convert to numbers and compute sum.

第三:会起作用

select A.CPM , B.column , A.column 
from A
join B 
  on B.column like concat('%', A.column,'%'); 

原因:

您使用正确的函数在运行时构建了最后一个值CONCAT

在MYSQL中Like是一个字符串比较函数。

LIKE运算符用于在非列匹配的列中搜索指定模式。

在上面的两个例子中,你匹配的是列。在最后一个中,您首先将列转换为字符串,然后像这样应用。