如何在 - Mysql中使用名字和姓氏进行搜索

时间:2011-10-10 10:40:35

标签: mysql search

考虑我在桌子上拖着田地

field_profile_first_name_value      field_profile_last_name_value

Victor                              Brecher
Abhi                                Jass             

select field_profile_first_name_value, field_profile_last_name_value 
from content_type_profile where field_profile_first_name_value LIKE '%Victor Bre%' OR 
field_profile_last_name_value LIKE '%Victor Bre%'

我有一个自动完整的文本框。

当我输入关键字作为胜利者时,它将获取结果。但如果我在同一时间给出名字和姓氏,它将不会产生结果。

即如果我将关键字命名为Victor Brecher,则不会产生结果。

如果我输入名字和姓氏,我如何才能得到结果?

我该怎么做?

4 个答案:

答案 0 :(得分:10)

尝试:

select * from contracts 
where lower(concat_ws(' ', field_profile_first_name_value, field_profile_last_name_value)) 
like lower('%Victor Bre%')

答案 1 :(得分:6)

好吧,即使你也不需要使用更低的。只是简单地使用它。

select * from contracts where concat_ws(' ', field_profile_first_name_value,field_profile_last_name_value)
like '%Victor Bre%'

答案 2 :(得分:0)

我会使用soundex。

select * from contracts where SOUNDEX(concat_ws(' ', field_profile_first_name_value,field_profile_last_name_value)) =  SOUNDEX('Victor Bre');

答案 3 :(得分:0)

我建议使用此代码,因此如果搜索输入是名称之前的姓氏,搜索也将起作用

SELECT 
 *
FROM
  contracts
WHERE
   CONCAT(firstname, ' ', lastname)) LIKE 'Victor Bre%'
OR CONCAT(lastname, ' ', firstname)) LIKE 'Victor Bre%';

此外,我在mysql 5.7+中使用和不使用LOWER()都测试了该sql代码,搜索已经做到了。