PostgreSQL计数子字符串在文本中出现的次数
发布时间:2020-12-13 16:29:44 所属栏目:百科 来源:网络整理
导读:我正在编写PostgreSQL函数来计算特定文本子字符串在另一段文本中出现的次数.例如,调用count(‘foobarbaz’,’ba’)应返回2. 我知道要测试是否出现子字符串,我使用类似于下面的条件: WHERE 'foobarbaz' like '%ba%' 但是,我需要它以’ba’出现的次数返回2.我
我正在编写PostgreSQL函数来计算特定文本子字符串在另一段文本中出现的次数.例如,调用count(‘foobarbaz’,’ba’)应返回2.
我知道要测试是否出现子字符串,我使用类似于下面的条件: WHERE 'foobarbaz' like '%ba%' 但是,我需要它以’ba’出现的次数返回2.我该怎么办? 在此先感谢您的帮助.
我强烈建议查看我发布到
“How do you count the occurrences of an anchored string using PostgreSQL?”的答案.所选答案显示比regexp_replace()的改编版本慢很多.创建行的开销和运行聚合的开销实在太高了.
最快的方法如下…… SELECT (length(str) - length(replace(str,replacestr,'')) )::int / length(replacestr) FROM ( VALUES ('foobarbaz','ba') ) AS t(str,replacestr); 在这里,我们 >取字符串L1的长度 相比之下,这比使用regexp_matches()的方法快了大约五倍. SELECT count(*) FROM ( VALUES ('foobarbaz',replacestr) CROSS JOIN LATERAL regexp_matches(str,'g'); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |