2011-08-20 68 views
6

我在搜索两个字段中的任何类似匹配时遇到了一些麻烦。 比如我有值的表:在MYSQL中有多个字段和空格的通配符

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

etc etc. 

我希望能够通过搜索以下任一组合,以获得结果“福特野马(谢尔比)”:

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

    或任何其他组合。

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

回答

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能力。

+0

它看起来比这更复杂一点,但我认为你对全文搜索是正确的,我没有看过。 谢谢您花时间帮助我。 – penpen

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?

+0

谢谢,给它一个快速尝试,但没有得到任何地方。想想看,当我有机会的时候我会仔细看看 – penpen