一个“搜索”mysql查询问题

时间:2012-07-01 00:11:17

标签: mysql sql

我有这个查询,我可以搜索TABLE_GLOBAL_PRODUCTS

$catglobal_sql = "
 select p.*, 
   case when 
     p.specials_new_products_price >= 0.0000 
     and p.expires_date > Now() 
     and p.status != 0 
   then p.specials_new_products_price 
   else p.products_price 
   end price 
 from ".TABLE_GLOBAL_PRODUCTS." p 
   INNER JOIN ".TABLE_STORES." s ON s.blog_id = p.blog_id 
 where 
   MATCH (p.products_name,p.products_description) AGAINST ('%".$search_key."%') 
   OR p.products_name like '%".$search_key."%' 
   order by p.products_date_added DESC, p.products_name";

这里的问题是,当我使用Cotton Shirts这样的短语进行搜索时,它会显示正确的结果。但是,当我只输入单个字Cotton时,它不会显示任何结果,而是显示与输入Cotton Shirts这样的短语时相同的结果。

1 个答案:

答案 0 :(得分:0)

使用MATCH时使用*而不是%作为通配符...反对... 因此,代码的匹配部分应如下所示:

  

...

     

MATCH(p.products_name,p.products_description)AGAINST('*“。$ search_key。”*')

     

...

在MATCH中,通配符略有不同

要匹配零个或多个字符,请使用

  • 在MATCH'*'
  • 在LIKE'%'

要匹配任何单个字符

  • 在MATCH'?'
  • 在LIKE'_'