我想在我的表格中搜索名字和姓氏两列。我目前从一个字段接受搜索项,并将其逐个与这两列进行比较。
select * from table where first_name like '%$search_term%' or
last_name like '%$search_term%';
这对于单个单词搜索项可以正常工作,但结果集包括了所有名为"Larry"的人。但是如果有人输入了名字和空格,然后是姓氏,我想要更窄的搜索结果。我已经尝试过以下方法但没有成功。
select * from table where first_name like '%$search_term%' or last_name
like '%$search_term%' or concat_ws(' ',first_name,last_name)
like '%$search_term%';
有什么建议吗?
编辑:我正在测试的姓名是 "Larry Smith"。数据库将 "Larry" 存储在 "first_name" 列中,"Smith" 存储在 "last_name" 列中。数据干净,没有额外的空格,并且搜索词被修剪过。
编辑 2:今天早上我试了 Robert Gamble 的答案。他的答案与我昨晚运行的非常相似。我无法解释,但今天它可以正常工作。我唯一能想到的区别是,昨晚我将 concat 函数作为搜索查询的第三个“或”段落运行(在查找 first_name 和 last_name 后)。今天早上,我在查找以上信息以及地址和商业名称后才运行它。
在查询末尾运行mysql函数比在中间运行更好吗?