在MySQL数据库中搜索全名或名字或姓氏,在单独的列中使用名字和姓氏

时间:2012-04-06 17:10:31

标签: php mysql

我正在使用现有数据库,该数据库在数据库中分隔了名字和姓氏。我需要创建一个函数,它将获取一个搜索输入并返回结果。说我的数据库有像....的结构。

nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

我怎么能使用MySql获取一个搜索输入,即'Joe Smith',然后获取他的行?但是,如果我只在搜索字段中放入“Joe”,那么将它们全部归还?我是否需要用空格来爆炸?谢谢!

2 个答案:

答案 0 :(得分:44)

SELECT * 
FROM table
WHERE CONCAT( nameFirst,  ' ', nameLast ) LIKE  '%Joe%'  

请务必清理任何用户提交的参数,例如“Joe”

答案 1 :(得分:1)

SELECT * FROM table WHERE CONCAT(nameFirst, ' ', nameLast) LIKE 'Joe%';

如果您确定搜索输入以“ Joe”开头以进行更多过滤,则建议使用此选项。

根据我的拙见,在许多情况下,我们不知道搜索输入是姓名还是姓氏,所以我建议使用此名称:

SELECT * FROM table WHERE CONCAT(nameFirst,  ' ', nameLast) LIKE  'SEARCH_INPUT%' OR CONCAT(nameLast,  ' ', nameFirst) LIKE 'SEARCH_INPUT%';