我有一个非常简单的搜索查询,看起来像这样
select * from products_stock where (
title like '%$searchterm%' or
short_desc like '%$searchterm%' or
long_desc like '%searchterm%'
)
当我从列long_desc中获得命中时,我想在PHP中编写一些特殊行为。有没有办法让mysql结果突出显示搜索成功的哪一列?
答案 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 '%...%'
匹配不能使用索引,并且“大”表的性能将非常糟糕。