[英]How to search in multiple columns using one like operator in HQL (hibernate sql)
[英]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.