В моем SQL я использую WHERE
и LIKE
для выполнения поиска. Однако мне нужно выполнить поиск по комбинированному значению из двух столбцов – first_name
и last_name
:
WHERE customers.first_name + customers.last_name LIKE '%John Smith%'
Это не работает, но я подумал, как я могу что-то сделать в этом направлении?
Я попытался сделать отдельный поиск двумя столбцами, например:
WHERE customers.first_name LIKE '%John Smith%' OR customers.last_name LIKE '%John Smith%'
Но, очевидно, это не сработает, потому что поисковый запрос представляет собой комбинированное значение этих двух столбцов.
Используйте следующее:
WHERE CONCAT(customers.first_name, ' ', customers.last_name) LIKE '%John Smith%'
Обратите внимание, что для того, чтобы это работало по назначению, имя и фамилия должны быть обрезаны, то есть они не должны содержать ведущие или завершающие пробелы. Лучше обрезать строки в PHP, прежде чем вставлять их в базу данных. Но вы также можете включить обрезку в свой запрос следующим образом:
WHERE CONCAT(TRIM(customers.first_name), ' ', TRIM(customers.last_name)) LIKE '%John Smith%'
Я бы начал с чего-то вроде этого:
WHERE customers.first_name LIKE 'John%' AND customers.last_name LIKE 'Smith%'
Это вернет результаты, такие как John Smith
, Johnny Smithy
, Johnson Smithison
, потому что знак процента находится только в конце предложения LIKE
. В отличие от '%John%'
который мог бы вернуть результаты, такие как: aaaaJohnaaaa
, aaaSmithaaa
.
попробуй это:
SELECT * FROM customers WHERE concat(first_name,' ',last_name) like '%John Smith%';
Справка:
Строковые функции MySQL