MYSQL搜索/通配符

时间:2011-11-17 14:00:40

标签: mysql

我尝试使用PHP搜索MySQL数据库,搜索工作正常,但我正在寻找一些通配符的帮助:

我正在搜索的字段(型号)中的数据是:“A4”(215个结果)

我的搜索字符串是:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4 Avant%'

有没有办法我仍然可以搜索'A4 Avant',但这将返回任何包含'A4'或'Avant'的字段

搜索词来自csv文件,所以我想尝试这样做,而不必先拆分两个单词并搜索'A4'和/或'Avant',我尝试了以下但没有得到任何结果:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4%Avant%'

你可能已经猜到这不是我的正常领域所以任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:9)

SELECT * FROM temp_comp.mvl WHERE (Model LIKE '%A4%') OR (Model LIKE '%Avant%')

如果您想避免拆分测试,可以使用正则表达式:

SELECT * FROM temp_comp.mvl WHERE Model REGEXP 'A4|Avant'  <<-- Either '%A4% or %Avant%
SELECT * FROM temp_comp.mvl WHERE Model REGEXP 'A4*Avant'  <<-- '%A4%Avant% 

请参阅reference

答案 1 :(得分:0)

MySQL没有内置的方法来在查询中拆分字符串。事先拆分它们然后在where子句中添加n个谓词是微不足道的。

SELECT * FROM `temp_comp`.`mvl` 
WHERE `Model` LIKE '%A4%' OR `Model` LIKE '%Avant%';

答案 2 :(得分:0)

以下是您如何实现这一目标。

像这样修改您的查询:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4%' AND Model LIKE '%Avant%'

上面的示例将在查询中查找搜索词的元素,使得它们都应该存在于记录中。如果您想搜索包含任一搜索字词的记录,可以将 AND 替换为 OR ,然后完成工作。

理想情况下,您可以按照以下步骤准备查询:

  1. 取输入字符串进行搜索。
  2. 按空格拆分,以便您有一个单词数组
  3. 遍历数组并构建搜索字符串。
  4. 在查询中使用搜索字符串。