我有一个列为first_name', 'last_name' & 'email
列的用户数据库。
然后我尝试使用SQL
进行搜索,如下所示:
SELECT *
FROM customers
WHERE email LIKE %?% OR
first_name LIKE %?% OR
last_name LIKE %?%";
所以说我的数据库中我的数据是这样的:
table tr td{
padding:5px;
}
<table border="1">
<tr><td>first_name</td><td>last_name</td><td>email</td></tr>
<tr><td>test</td><td>user</td><td>user@test.com</td></tr>
</table>
在这种情况下,我可以搜索'test'
或者我可以搜索'user'
并获得正确的结果,但如果我搜索'test user'
则没有结果。
在这样的多列中搜索的最佳方法是什么,其中只有部分搜索字符串可能位于一列中,而部分位于另一列中。
答案 0 :(得分:1)
您需要一个不同的查询。无法用多个输入参数表达LIKE
。
因此,您可以将所有搜索字词放入表格中,这些内容......
SELECT
*
FROM
customers
INNER JOIN
(
SELECT '%test%' AS param
UNION ALL SELECT '%user%'
)
AS search
ON customers.email LIKE search.param
OR customers.first_name LIKE search.param
OR customers.last_name LIKE search.param
(或者您可以创建一个实际的表而不是使用内联视图。)