mysql搜索,返回搜索成功的列名

时间:2012-12-04 14:53:57

标签: mysql search

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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