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

18

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

nameFirst nameLast
Joe       Smith
Joe       Jones
Joe       Brown

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

Вам также нужно найти «Смита, Джо» или «Джозефа Смита»? Randy
Разобрать строку - это один из способов, но что, если в этом есть средний инициал или имя? dqhendricks
Поиск, скорее всего, был бы похож на «Джо Смита» ... также в базе данных есть некоторый экземпляр, где есть .Jrs и т. Д. G.Thompson

Ваш Ответ

2   ответа
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;

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded G.Thompson
fullnameError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы