sql - 使用LIKE一次搜索两列(名字和姓氏)

时间:2014-03-15 16:19:14

标签: sql

我正在尝试在我的网站上构建搜索功能。我搜索用户名和电子邮件,但我也希望能够根据用户的全名进行搜索。我的问题是first_name和last_name是分开存储的,我不知道如何为此构建查询。像

这样的东西
SELECT * FROM users WHERE first_name AND last_name LIKE '%$query%'

显然这是非常错误的 - 任何帮助?

3 个答案:

答案 0 :(得分:5)

SELECT * FROM users WHERE first_name LIKE '%$query%' AND last_name LIKE '%$query%'

答案 1 :(得分:1)

是的,请尝试使用以下查询:

对于Oracle:

SELECT * FROM users WHERE first_name || ' ' || last_name LIKE '%' || $query || '%';

对于SQL Server:

SELECT * FROM users WHERE first_name + ' ' + last_name LIKE '%' + $query + '%';

答案 2 :(得分:1)

如果您关心效果,可能需要调查全文索引。

您还需要清楚地思考功能。你想让“约翰”匹配“约翰逊”吗?你想要“Ann”来搭配“Joanne”吗?您对此功能的决定会对性能产生重大影响。通常,在另一个字符串中搜索任意子字符串会阻碍索引的使用。

但是,直接回答你的问题是由阿米特提供的。它应该适用于任何数据库。