25

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

nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

我怎么能使用 MySql 输入“Joe Smith”这样的搜索输入并得到他的行?但是,如果我在搜索字段中只输入“乔”,则全部返回?我需要用空格爆炸字符串吗?谢谢!

4

3 回答 3

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

确保清理所有用户提交的参数,例如“Joe”

于 2012-04-06T17:19:48.077 回答
3
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%';
于 2019-02-05T15:56:51.927 回答
0
$sql = "SELECT * from add_contact  WHERE ( CONCAT(first_name, ' ',last_name)  LIKE '%$search%' OR first_name LIKE '%$search%' OR last_name LIKE '%$search%' OR company LIKE '%$search%') AND (archives='$archives') ORDER BY UNIX_TIMESTAMP(sort_date) DESC";
于 2022-02-03T12:42:51.997 回答