我尝试使用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%'
你可能已经猜到这不是我的正常领域所以任何帮助都会非常感激。
答案 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 ,然后完成工作。
理想情况下,您可以按照以下步骤准备查询: