3

我有一个非常简单的搜索查询,看起来像这样

select * from products_stock where (
    title like '%$searchterm%' or 
    short_desc like '%$searchterm%' or 
    long_desc like '%searchterm%'
)

当我从 long_desc 列中获得成功时,我想在 PHP 中编写一些特殊行为。有没有办法让mysql结果突出显示搜索成功的列?

4

1 回答 1

3

您可以使用派生字段。看起来很难看,但有效:

SELECT *, (title LIKE '%$searchterm%') AS found_in_title,
     (short_desc LIKE '%$searchterm%') AS found_in_short_desc
     etc...

LIKE 将返回布尔值 true/false 作为结果集中的字段,AS 别名将告诉您匹配发生在哪个字段中。

请注意,对这类事情使用全文索引可能会好得多。LIKE '%...%'匹配不能使用索引,并且在“大”表上性能将非常糟糕。

于 2012-12-04T14:56:38.270 回答