sql选择查询多个不完整的单词

时间:2012-03-09 11:07:26

标签: php mysql sql select

需要帮助解决我的问题...

我的数据库中有一条记录,其中包含一行中的多个单词。

示例:

PRODUCT_NAME:

white sugar big
brown sugar big
white sugar small
brown sugar small

现在......我做了一个选择查询,能够选择产品甚至不完整的单词。我在这里使用'喜欢'。

select * from products where prod_name like '%".$pname."%' 

注意:$ pname是一个php varriable ...

所以我试着查询“whi”这个词

然后结果是:

white sugar big
white sugar small

现在我的问题是我想让我的搜索灵活,如果我搜索单词“whi bi”

结果将是“

white sugar big....

thnx in adavance =)

4 个答案:

答案 0 :(得分:2)

在构建查询之前,只需用php变量中的%替换每个空格。

答案 1 :(得分:0)

将搜索字词中的空格替换为% $term = str_replace(" ", "%", $term)然后执行db查询。

答案 2 :(得分:0)

您可能想在MYSQL中尝试全文搜索,这将自动编译基于评分的搜索:

请参阅http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

select * from products where  MATCH (prod_name) AGAINST ('whi bi')

或者,你可以爆炸这个词并构建多个搜索:

$searchTerms = explode(' ',$pname);
$term='%'.str_replace(' ','%',$pname).'%';
$sql = "select * from products where prod_name like '$term'";

答案 3 :(得分:0)

简单的答案类似于使用{%{1}}关键字使用“%xx%yyy%zzz%”发布的答案。如果您希望有复杂的搜索,那么您可以使用REGEXP:

LIKE

然后你的PHP代码需要准备:

select * from products where prod_name REGEXP 'whi[.]*bi[.]*'