1

我有这个查询,我可以在其中搜索 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它会显示正确的结果。但是,当我只输入一个单词 likeCotton时,它​​不会显示任何结果,而不是显示与输入短语 like 时相同的结果Cotton Shirts

4

1 回答 1

0

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

...

MATCH (p.products_name,p.products_description) 反对 ('*".$search_key."*')

...

在 MATCH 中,通配符略有不同

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

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

要匹配任何单个字符,请使用

  • 在 MATCH '?'
  • 在喜欢'_'
于 2012-07-01T01:40:47.877 回答