MYSQL 中具有多个字段和空格的 LIKE 通配符

问题描述 投票:0回答:3

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

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

etc etc.

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

  • 福特

  • 野马

  • 谢尔比

  • 福特野马

    或任何其他组合。

这可能吗? 我进行了很好的搜索,但很难找到搜索词来描述我的意思。

mysql sql search sql-like
3个回答
9
投票

将术语拆分为空格,然后为每个术语构建一点 SQL,如下所示:

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

然后用

or
连接所有这些以获得 WHERE 子句。因此,对于“Shelby Ford”,您最终会得到如下 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 的全文搜索功能。


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

不确定确切的语法,因为我不在家,但类似的东西应该可以工作。

另请参阅:在 WHERE 子句中使用 mysql concat()?


0
投票

在这种情况下,使用 LIKE '%Ford Mustang%' 和 LIKE 'Ford Mustang%' 有什么区别

© www.soinside.com 2019 - 2024. All rights reserved.