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

时间:2015-09-01 09:50:48

标签: php mysql mysqli sql-like

我的表格看起来像这样

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

现在我需要根据'name'字段准备搜索。 这是select语句

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

现在,假设关键字为“ clinker 1 ”,我希望我的表的第一行作为结果集。 我怎么能做到这一点?

2 个答案:

答案 0 :(得分:-1)

您需要拆分$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

因此,如果$关键字为clinker 1,则生成的查询将为:

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

答案 1 :(得分:-1)

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

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