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

标签 mysql search

我有一个非常简单的搜索查询,如下所示

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

当我从 long_desc 列中获得命中时,我想在 PHP 中编写一些特殊行为。有什么办法可以让mysql的结果高亮在哪一列搜索成功?

最佳答案

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

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

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

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

关于mysql搜索,返回搜索成功的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13705644/

相关文章:

python - 此 python 代码中此 POST 方法的 json 请求是否正确?

mysql - 如何在数据库中搜索文本片段

html - CSS:关于我的响应式标题设计的问题

Ajax 搜索功能,包括来自高级自定义字段的数据

mysql - 具有输入和输出 SQL 的存储过程

mysql - 如何建模 MySQL 结构来处理身份验证?与用户信息分离

php - 将复选框与相应的输入字段分组

php - 从MySQL中提取数据并使用php中的表id显示在表中?

javascript - 如何使用分割成数组的字符串搜索数组?

java - 在 Set 集合中搜索