Объедините два столбца в SQL для предложения WHERE
В моем 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%'
Но, очевидно, это не сработает, потому что поисковый запрос представляет собой комбинированное значение этих двух столбцов.
Ответы
Ответ 1
Используйте следующее:
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%'
Ответ 2
Я бы начал с чего-то вроде этого:
WHERE customers.first_name LIKE 'John%' AND customers.last_name LIKE 'Smith%'
Это приведет к возврату таких результатов, как: John Smith
, Johnny Smithy
, Johnson Smithison
, потому что знак процента находится только в конце предложения LIKE
. В отличие от '%John%'
, который может возвращать результаты, такие как: aaaaJohnaaaa
, aaaSmithaaa
.
Ответ 3
попробуйте следующее:
SELECT *
FROM customers
WHERE concat(first_name,' ',last_name) like '%John Smith%';
ссылка:
Строковые функции MySQL