PostgreSQL-查询表

我们都知道在SQL中,我们可以通过这样的查询来查询一列(例如“品种”列)中的“ dog”之类的特定单词:

select breeds
from myStackOverflowDBTable
where breeds = 'dog'

但是,说我有更多的列包含更多的数据,说数百万条记录,并且我不想找到一个单词,而是最常见的关键字模式或通配符表达式,像这样的查询:

SELECT * 
FROM myStackOverflowDBTable
WHERE address LIKE '%alb%'"

是否存在使用SQL在列内查找这些“模式”的有效方法?我需要找到最常见的子字符串,根据上面的查询,说通配符字符串“ alb”在“位置”列中出现最多,该列中包含奥尔巴尼,阿尔伯克基,阿拉巴马州等词,显然是直接查询这些词会产生0个结果,但查询该通配符关键字模式会产生很多结果,但是我想为给定列查找最重复或最频繁的通配符/关键字模式/正则表达式表达式/子字符串(无论如何定义它) -有没有一种简便的方法,而无需查询一百万个测试查询并手动进行呢?

hui3636 回答:PostgreSQL-查询表

好吧,如果要查找三个字符模式,可以 提取所有3个字符的模式,并进行累加和计数:

select substr(t.address,gs.i,3) as ngram_3,count(*)
from t cross join lateral
     generate_series(1,length(address) - 3,1) gs(i)
group by ngram_3
order by count(*) desc
limit 100;
本文链接:https://www.f2er.com/3025896.html

大家都在问