我正在尝试在我的网站上构建搜索功能。我搜索用户名和电子邮件,但我也希望能够根据用户的全名进行搜索。我的问题是first_name和last_name是分开存储的,我不知道如何为此构建查询。像
这样的东西SELECT * FROM users WHERE first_name AND last_name LIKE '%$query%'
显然这是非常错误的 - 任何帮助?
答案 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”吗?您对此功能的决定会对性能产生重大影响。通常,在另一个字符串中搜索任意子字符串会阻碍索引的使用。
但是,直接回答你的问题是由阿米特提供的。它应该适用于任何数据库。