如何在SQL中搜索多个关键字

我有一个当前的SQL搜索查询,该查询允许用户输入关键字来搜索我的SQL数据库。目前,搜索将使用多个单词,但只能使用相同的顺序,即“ Ford Mustang”将以确切的顺序显示包含“ Ford Mustang”的结果。如果用户输入“ Mustang”或“ Mustang Ford”,则不会显示任何结果。如何更改搜索查询以显示具有两个关键字但不一定按相同顺序排列的结果?我已经搜索了该站点和其他站点,发现了类似的问题,但是找不到我能够解决的任何答案。

public function getProductByName($name){
    $stmt = $this->pdo->prepare('SELECT * FROM tbl_products WHERE name LIKE :name');
    $name = "%".$name."%";
    $stmt->execute(array('name' => $name));
    return $stmt;
}

有人建议以下内容,它可以搜索任何一个关键字,但是我需要搜索两个关键字,只是顺序不一。

public function getProductByName($name){
    $stmt = $this->pdo->prepare('SELECT * FROM tbl_products WHERE name REGEXP :names');
    $names = "[[:<:]](" . str_replace(" ","|",$name) . ")[[:>:]]";
    $stmt->execute(array('names' => $names));
    return $stmt;
}
jian385330454 回答:如何在SQL中搜索多个关键字

如果您可以更改表以将FULLTEXT添加到名称列,则可以使用Full text Search选项。

select *
from tbl_products
where match(name) against ('+Mustang +Ford' in boolean mode)

Check demo here

本文链接:https://www.f2er.com/3162196.html

大家都在问