我正在寻找一种方法,您可以在拆分的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
答案 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', ' ', '');