Mysql:在拆分名称表中搜索fullname

时间:2013-08-24 19:14:00

标签: php mysql string concatenation concat

我正在寻找一种方法,您可以在拆分的collumn表中查找全名

我尝试过:例如“michael peter johnson”

select firstName,middleName,lastName 
from staff 
where concat(firstName, ' ', middlename, ' ', lastname) Like "%michael peter johnson%"

有效,但名称为"michael johnson" 它不起作用导致创建的concat名称:"michael (double space)johnson" 因此concat会创建两个空格,但不匹配。

有没有人知道另一种方法来解决这个问题?

编辑:这个想法是字符串“michael peter johnson”是一个用户输入字段。所以它不能分成3个单独的字符串,这不是这个搜索栏的想法

Edit2:我还注意到,如果中间名为“NULL”,并且concat(firstName,'',middlename,'',lastname)与NU ::的结果为NULL,那么它永远不会找到它。< / p>

任何解决方案?

THX Matthy

4 个答案:

答案 0 :(得分:2)

你可以这样做:

select firstName, middleName, lastName 
from staff 
where concat(firstName, ' ', middlename, ' ', lastname) Like "%michael%peter%johnson%"

但我认为你想要:

select firstName, middleName, lastName 
from staff 
where firstName like '%michael%' and
      middleName like '%peter%' and
      lastName like '%johnson%';

或者因为您的数据库值似乎有空格,可能只是:

select firstName, middleName, lastName 
from staff 
where trim(firstName) = 'Michael' and
      trim(middleName) = 'Peter' and
      trim (lastName) = 'Johnson';

编辑:

或者,你可以这样做:

where concat(trim(firstName), ' ', trim(middlename), ' ', trim(lastname)) Like concat('%', 'michael peter johnson', '%')

答案 1 :(得分:2)

Replace还有一个选择:

select firstName,middleName,lastName 
from staff 
where replace(concat(firstName, ' ', middlename, ' ', lastname), '  ', ' ') Like "%michael peter johnson%"

答案 2 :(得分:1)

如果你和迈克尔约翰逊一起搜索。这样做

     select name, midle, last 
     from staff
     where concat(name, ' ', midle, ' ', last) Like "%michael%johnson%"

在这里demo玩编辑:

 select firstName,middleName,lastName 
 from table1
 where (firstName Like "%michael%" AND lastName  LIKE "%johnson%" )

答案 3 :(得分:0)

可能不是最有效的解决方案,但应该符合您的要求:

select firstName, midlename, lastname 
from staff
where replace(concat(ifnull(firstName, ''), ifnull(middlename, ''), ifnull(lastname, '')), ' ', '') = replace('michael peter johnson', ' ', '');