我需要在 sql 语句的 LIKE 模式中搜索字段值

I need to search field value in LIKE pattern of sql statement

我的table看起来像这样

Id  | name   
---------------
1   |  clinker
2   |  gypsum

现在我需要准备一个基于 'name' 字段的搜索。 这是 select 声明

select * from table where name like '%$keyword%'

现在,假设关键字是“clinker 1”,我想要 table 的第一行作为结果集。 我怎样才能做到这一点?

您需要拆分 $keyword 并扩展您的查询以匹配 $keyword 列表中的任何单词:

$keywordList = explode(' ', $keyword);
$sql = 'select * from table where ';
while (!empty($keywordList)) {
    $likeKeyword = array_shift($keywordList);
    $sql .= "keyword like '%{$likeKeyword}%'";
    if (!empty($keywordList))
        $sql .= " or ";
}
//...run your query here

因此,如果 $keyword 是 clinker 1,结果查询将是:

select * from table where keyword like '%clinker%' or keyword like '%1%'

不太确定 MySQL,但 LIKE 应该可以在任一侧或两侧使用 any 字符表达式。这包括列和文字。因此,可以反过来使用 LIKE 来查找反向匹配:

SELECT *
FROM table
WHERE name LIKE '%$keyword%'
OR '$keyword' LIKE CONCAT('%', name, '%')