SQL使用LIKE%搜索多个列?%

时间:2018-05-24 08:41:01

标签: sql database search

我有一个列为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'则没有结果。

在这样的多列中搜索的最佳方法是什么,其中只有部分搜索字符串可能位于一列中,而部分位于另一列中。

1 个答案:

答案 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

(或者您可以创建一个实际的表而不是使用内联视图。)