2012-04-06 151 views
15

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

nameFirst nameLast 
Joe  Smith 
Joe  Jones 
Joe  Brown 

我怎么可能,使用MySQL,需要搜索输入是说“张三”,只是让他的行?但是,如果我只在搜索字段中放入“Joe”,请全部归还它们?我需要用一个空格来爆炸字符串吗?谢谢!

+0

你还需要找到“史密斯,乔”或“斯密约瑟”? – Randy 2012-04-06 17:13:16

+1

爆炸字符串是一种方法,但如果涉及中间名或初始名称,该怎么办? – dqhendricks 2012-04-06 17:13:23

+0

搜索很可能会像'乔史密斯'...也有一些实例在数据库中有.Jrs和这样的 – 2012-04-06 17:17:00

回答

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

一定要消毒任何用户提交的参数,如“乔”

+8

这可能会在一张大桌子上很慢.. – 2012-04-06 17:20:38

+2

我用codeigniter主动记录,但这里是什么我结束了使用... $ term = $ search_array ['term']; (“SELECT * FROM Database WHERE CONCAT(nameFirst,'',nameLast)LIKE'%$ term%'”); – 2012-04-06 18:22:09

+1

它为我工作。 – 2016-08-12 15:16:53