Как шаблон с несколькими полями и пробелами в MYSQL - PullRequest
6 голосов
/ 20 августа 2011

У меня возникли проблемы с поиском похожих совпадений в двух полях.Например, у меня есть таблица со значениями:

CAR MAKE   CAR MODEL
Ford       Mustang (Shelby)
Toyota     Corolla
Seat       Leon

etc etc.

Я хочу получить результат "Ford, Mustang (Shelby)", выполнив поиск любой из следующих комбинаций:

  • Ford
  • Mustang
  • Shelby
  • Ford Mustang

    или любая другая комбинация.

Возможно ли это?У меня был хороший поиск, но трудно найти условия поиска, чтобы описать, что я имею в виду.

Ответы [ 2 ]

7 голосов
/ 20 августа 2011

Разделите ваши термины на пробелы, а затем для каждого термина создайте немного SQL, например, так:

car_make like '%x%' or car_model like '%x%'

Затем присоединитесь ко всем с помощью or, чтобы получить предложение WHERE. Так что для «Шелби Форд» вы бы получили SQL вроде этого:

select stuff
from cars
where car_make like '%Shelby%'
   or car_model like '%Shelby%'
   or car_make like '%Ford%'
   or car_model like '%Ford%'

Если вам нужно что-то более сложное, изучите возможности полнотекстового поиска MySQL *1009*.

2 голосов
/ 20 августа 2011

Попробуйте:

SELECT Car_Make, Car_Model, CONCAT_WS(' ', Car_Make, Car_Model) as Make_Model 
FROM cars 
WHERE CONCAT_WS(' ', Car_Make, Car_Model) LIKE '%Ford Mustang%'

Не уверен в точном синтаксисе, так как я не дома, но что-то подобное должно работать.

См. Также: Использование mysql concat () в предложении WHERE?

...