在MYSQL中使用带有多个字段和空格的通配符

时间:2011-08-20 03:07:21

标签: mysql sql search sql-like

我在两个字段中搜索任何类似的匹配时遇到了一些麻烦。 例如,我有一个包含值的表:

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

etc etc.

我希望能够通过搜索以下任何组合来获得结果“Ford,Mustang(Shelby)”:

  • 福特
  • 野马
  • 谢尔比
  • Ford Mustang

    或任何其他组合。

这可能吗? 我有一个很好的搜索,但很难找到描述我的意思的搜索词。

2 个答案:

答案 0 :(得分:7)

在空格上拆分你的术语然后,对于每个术语,构建一些像这样的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的full-text search功能。

答案 1 :(得分:2)

尝试一下:

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%'

不确定确切的语法,因为我不在家,但类似的东西应该有用。

另请参阅:Using mysql concat() in WHERE clause?