如何加入表格..喜欢...' table.variable'

时间:2015-10-14 09:24:51

标签: mysql join sql-like

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

我的初始代码是:

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

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

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上前两个的结果虽然是空白的。

2 个答案:

答案 0 :(得分:1)

第一:不会工作

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

在运行时构建最后一个值

答案 1 :(得分:1)

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

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

在上面的两个示例中,您将与列匹配。在最后一个中,您首先将列转换为字符串,然后应用。