考虑我在桌子上拖着田地
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,则不会产生结果。
如果我输入名字和姓氏,我如何才能得到结果?
我该怎么做?
答案 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代码,搜索已经做到了。