Я хотел бы выполнить поиск в моей таблице с столбцом с именами и столбцом с именами. В настоящее время я принимаю поисковый запрос из поля и сравниваю его с обоими столбцами, по одному с
select * from table where first_name like '%$search_term%' or
last_name like '%$search_term%';
Это отлично работает с терминами поиска по одному словарю, но в набор результатов входят все с именем "Ларри". Но если кто-то вводит имя, то пробел, затем фамилию, я хочу более узкий результат поиска. Я пробовал следующее без успеха.
select * from table where first_name like '%$search_term%' or last_name
like '%$search_term%' or concat_ws(' ',first_name,last_name)
like '%$search_term%';
Любые советы?
EDIT: Название, с которым я тестирую, - "Ларри Смит". ДБ хранит "Ларри" в столбце "first_name" и "Smith" в столбце "last_name". Данные чистые, без лишних пробелов, а поисковый запрос обрезается влево и вправо.
РЕДАКТИРОВАТЬ 2: Я попробовал ответить Роберту Гэмбл сегодня утром. Его очень похоже на то, что я бежал прошлой ночью. Я не могу это объяснить, но сегодня утром это работает. Единственное различие, о котором я могу думать, это то, что вчера вечером я запустил функцию concat как третий "или" сегмент моего поискового запроса (после просмотра first_name и last_name). Сегодня утром я провел его как последний сегмент, просмотрев выше, а также адреса и названия компаний.
Работает ли функция mysql в конце запроса лучше, чем в середине?