我正在使用现有数据库,该数据库在数据库中分隔了名字和姓氏。我需要创建一个函数,它将获取一个搜索输入并返回结果。说我的数据库有像....的结构。
nameFirst nameLast
Joe Smith
Joe Jones
Joe Brown
我怎么能使用MySql获取一个搜索输入,即'Joe Smith',然后获取他的行?但是,如果我只在搜索字段中放入“Joe”,那么将它们全部归还?我是否需要用空格来爆炸?谢谢!
答案 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%';