基本上我正在检查一列是否包含数组中的关键字列表中的任何一个
SELECT COUNT(*) FROM table WHERE value ILIKE ANY (ARRAY['%bat%', '%cat%', ...])
可以很好地给我这些关键词的总列数,但是我还想计算每个关键词被击中了多少次。理想情况下,我最终会得到
Keyword | Count
---------------------
bat | 4
cat | 10
等等。有任何想法吗?谢谢!
使用正则表达式测试文本中的完整单词会更好:
with
words(word) as (values ('bat', 'cat'))
select w.word, count(*)
from words w
join table t on (t.value ~* ('\m'||w.word||'\M'))
group by w.word;
如果需要区分大小写的搜索,请替换~*
为~
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句