18

Вопрос по mysql, php – Поиск полного имени или имени или фамилии в базе данных MySQL с именем и фамилией в отдельных столбцах

Я работаю с существующей базой данных, в которой имя и фамилия разделены в базе данных. Мне нужно создать функцию, которая будет принимать один вход для поиска и возвращать результаты. скажем, моя база данных имеет структуру, как ....

nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

Как я мог, используя MySql, взять поисковый запрос, скажем «Joe Smith»? и просто получить его грести? Но если я поставлю только «Джо» в поле поиска вернуть их все? Нужно ли взрывать строку пробелом? Спасибо!

  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • fullnameError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от G.Thompson
  • Поиск, скорее всего, был бы похож на «Джо Смита» ... также в базе данных есть некоторый экземпляр, где есть .Jrs и т. Д.

    от G.Thompson
  • Вам также нужно найти «Смита, Джо» или «Джозефа Смита»?

    от Randy
  • Разобрать строку - это один из способов, но что, если в этом есть средний инициал или имя?

    от dqhendricks
  • 1

    Я предлагаю использовать это

    SELECT * FROM table WHERE CONCAT(nameFirst, ' ', nameLast) LIKE 'Joe%';
    

    если вы уверены, что ваш поисковый ввод начинается с & quot; Joe & quot; фильтровать больше.

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

    SELECT * FROM table WHERE CONCAT(nameFirst,  ' ', nameLast) LIKE  'SEARCH_INPUT%' OR CONCAT(nameLast,  ' ', nameFirst) LIKE 'SEARCH_INPUT%';
    

  • 41

    Обязательно очистите все параметры

    SELECT * 
    FROM table
    WHERE CONCAT( nameFirst,  ' ', nameLast ) LIKE  '%Joe%'  
    

    отправленные пользователем, например & quot; Джо & quot;