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

2022-08-30 16:53:42

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

nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

我如何使用MySql,获取一个搜索输入,比如“Joe Smith”,然后得到他的行?但是,如果我在搜索字段中只输入“Joe”,请全部返回?我需要用空格分解字符串吗?谢谢!


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

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


答案 2
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%';

推荐