繁体   English   中英

SQL使用LIKE%?%搜索多列

[英]SQL search multiple columns using LIKE %?%

我有一个用户数据库,其中有列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' ,则没有结果。

跨多个列进行搜索的最佳方法是这样,其中只有一部分搜索字符串可能在一个列中,而一部分在另一列中。

您需要其他查询。 无法用多个输入参数来表示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

(或者,您可以制作一个实际的表而不是使用嵌入式视图。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM