sql - 如何根据 sql 中的匹配数针对关键字数组搜索字符串并排序结果?
问题描述
我在这里看到了类似的答案:
并想知道如何适应它。实际上很震惊下面的订单声明有效。但想知道如何调整它以用于一系列关键字。
数组['快乐','生日'.. x 更多关键字]
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
解决方案
一种方法是在子查询中使用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
推荐阅读
- c - 对于此示例,函数 my_func 是否暴露给链接器?
- apache-kafka - Kafka 服务器节点因“打开的文件过多”错误而关闭
- reactjs - 如何在 reactjs 中自动化 firebase 部署?
- python - 可视化属于同一集群的时间序列数组
- javascript - 在 useEffect 钩子中添加依赖会导致无限循环
- java - 从 arraylist 接收的下拉列表中的打印输出值
- python - 使用存储在多个字典的不同键中的字符串填充 python 元组
- xamarin.forms - 如何将 ListView 子项的 BackgroundColor 绑定到值?
- angular - 角度停止和恢复 html 检查
- c# - 如何将透明填充添加到 jpg 并将其保存为具有透明度的 png?