2013-08-24 34 views
0

我找的,你可以找一個全名的分裂collumn表MySQL的:在一個分裂的名稱表搜索全稱

我試過的方法:例如用「邁克爾·彼得·約翰遜」

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個獨立的字符串a,這不是這個搜索欄的想法

Edit2:我也注意到,如果中間名是「NULL」,並且concat(firstName,''中間名,'',姓氏)與NU ::是NULL,所以它永遠不會找到它。

任何解決方案?

THX Matthy

回答

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', '%') 
+0

那麼問題是,「邁克爾皮特約翰遜」是一個用戶輸入字符串。所以它需要尋找一個表中的全名,該樹的名稱結合了 – matthy

+0

thanx第一個可能會工作它它不適用於NULL問題請參閱「編輯2」 – matthy

1

如果您檢索算法與邁克爾·約翰遜。

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

謝謝!它會probarly工作它它不是空的問題看到「編輯2」 – matthy

+0

@matthy檢查我的編輯 –

2

Replace是多了一個選項:

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

這就是我需要:D – AlexJaa

+0

爲我工作。乾杯!! –

0

可能不是最有效的解決方案,但應該努力做這個

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

這裏demo

編輯播放爲您的要求:

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