【问题标题】:mysql search, returning the column names where the search was successfulmysql搜索,返回搜索成功的列名
【发布时间】:2012-12-04 14:53:57
【问题描述】:

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

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

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

【问题讨论】:

  • 你的意思是 3 个标题 title short_desc long_desc?

标签: mysql search


【解决方案1】:

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

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

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

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

【讨论】:

  • 性能非常糟糕,你就在那里。实际的生产查询更复杂,我认为重写以使用全文搜索是明智的,但同时你给我的会做。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多