SQL WHERE 语句多列 LIKE 一个值

问题描述 投票:0回答:2

尝试获取一个 SQL 查询,您在其中定义一次值并搜索多个列。我让它适用于等于运算符,但我也需要它用于 LIKE 运算符。这就是问题所在。

SELECT *
FROM table1
INNER JOIN table2 ON table2.id = table1.ref_id
WHERE (table1.email, table2.email) LIKE '%[email protected]%'

这是我当前的查询,但不起作用。在网上查看了其他一些问题,但这些解决方案对我不起作用。

如何使用 LIKE 运算符在多个列中搜索一个值?

mysql sql mysql-workbench
2个回答
3
投票

您问题的具体答案是这样的:

WHERE CONCAT_WS('|', table1.email, table2.email) LIKE '%[email protected]%'

一般不会使用。更常见的方法很简单:

WHERE table1.email LIKE '%[email protected]%' OR
      table2.email LIKE '%[email protected]%'

0
投票

使用

SELECT *
FROM table1
INNER JOIN table2 ON table2.id = table1.ref_id
WHERE 
table1.email LIKE '%exa[email protected]%'
OR
table2.email LIKE '%[email protected]%'

一般来说,这应该比使用不同列串联的其他解决方案(使用

+
concat
CONCAT_WS
等)更快,因为为每行运行串联会产生开销。

另请参阅:使用串联和 LIKE 的查询性能

© www.soinside.com 2019 - 2024. All rights reserved.