如何根据 sql 中的匹配数针对关键字数组和排序结果搜索字符串?
Posted
技术标签:
【中文标题】如何根据 sql 中的匹配数针对关键字数组和排序结果搜索字符串?【英文标题】:how to search string against array of keywords and order results based on number of matches in sql? 【发布时间】:2019-08-09 00:46:14 【问题描述】:我在这里看到了类似的答案:
Select and order by most matches
并且想知道如何适应它。实际上很震惊下面的订单声明有效。但想知道如何调整它以用于一系列关键字。
数组['happy','birthday'.. x more keywords]
select *
from table_name query
where column_name like '%something%' or column_name like '%somethingelse%'
order by ((case when column_name like '%something%' then 1 else 0 end) +
(case when column_name like '%somethingelse%' then 1 else 0 end)
. . .
) desc
【问题讨论】:
【参考方案1】:一种方法是在子查询中使用unnest()
和count(*)
:
select v.*,
(select count(*)
from unnest(array['this', '2', 'is']) pat
where str like '%' || pat || '%'
) cnt
from (values ('this is a test'), ('test 2 x')) v(str)
order by cnt desc
【讨论】:
以上是关于如何根据 sql 中的匹配数针对关键字数组和排序结果搜索字符串?的主要内容,如果未能解决你的问题,请参考以下文章
使用concat和sort来针对性处理数组内嵌套多数组,并根据条件来进行排序