Как искать по имени и фамилии в - Mysql - PullRequest
3 голосов
/ 10 октября 2011

Считайте, что у меня в поле есть буксирные поля

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 ]

10 голосов
/ 10 октября 2011

Попробуйте:

select * from contracts 
where lower(concat_ws(' ', field_profile_first_name_value, field_profile_last_name_value)) 
like lower('%Victor Bre%')
6 голосов
/ 10 октября 2011

Ну, даже вам не нужно использовать ниже тоже.просто используйте это просто.

select * from contracts where concat_ws(' ', field_profile_first_name_value,field_profile_last_name_value)
like '%Victor Bre%'
0 голосов
/ 05 февраля 2019

Я предлагаю использовать этот код, поэтому поиск работает также, если в качестве входных данных для поиска используется фамилия перед именем

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

Более того, я тестировал этот SQL-код с и без LOWER (), в MySQL 5.7+ поиск уже делал это.

0 голосов
/ 20 августа 2013

Я бы использовал soundex.

select * from contracts where SOUNDEX(concat_ws(' ', field_profile_first_name_value,field_profile_last_name_value)) =  SOUNDEX('Victor Bre');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...