尝试获取一个 SQL 查询,您在其中定义一次值并搜索多个列。我让它适用于等于运算符,但我也需要它用于 LIKE 运算符。这就是问题所在。
SELECT *
FROM table1
INNER JOIN table2 ON table2.id = table1.ref_id
WHERE (table1.email, table2.email) LIKE '%[email protected]%'
这是我当前的查询,但不起作用。在网上查看了其他一些问题,但这些解决方案对我不起作用。
如何使用 LIKE 运算符在多个列中搜索一个值?
您问题的具体答案是这样的:
WHERE CONCAT_WS('|', table1.email, table2.email) LIKE '%[email protected]%'
一般不会使用。更常见的方法很简单:
WHERE table1.email LIKE '%[email protected]%' OR
table2.email LIKE '%[email protected]%'
使用
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 的查询性能。