我的表格看起来像这样
Id | name
---------------
1 | clinker
2 | gypsum
现在我需要根据'name'字段准备搜索。 这是select语句
select * from table where name like '%$keyword%'
现在,假设关键字为“ clinker 1 ”,我希望我的表的第一行作为结果集。 我怎么能做到这一点?
答案 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, '%')