如何加入 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
运算符用于在非列匹配的列中搜索指定模式。
在上面的两个例子中,你匹配的是列。在最后一个中,您首先将列转换为字符串,然后像这样应用。
我有两个表,我正在尝试加入它们并在 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
运算符用于在非列匹配的列中搜索指定模式。
在上面的两个例子中,你匹配的是列。在最后一个中,您首先将列转换为字符串,然后像这样应用。