我有两个表,我正在尝试加入它们并在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上前两个的结果虽然是空白的。
答案 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
运算符用于在列匹配中搜索指定的模式。
在上面的两个示例中,您将与列匹配。在最后一个中,您首先将列转换为字符串,然后应用。