当前位置: 首页 > 面试题库 >

PostgreSQL计算子字符串在文本中出现的次数

澹台胜
2023-03-14
问题内容

我正在编写一个PostgreSQL函数,以计算特定文本子字符串在另一段文本中出现的次数。例如,调用count(’foobarbaz’,’ba’)应该返回2。

我了解要测试子字符串是否出现,我使用类似于以下的条件:

    WHERE 'foobarbaz' like '%ba%'

但是,我需要它返回“ ba”发生次数的2。我该如何进行?

在此先感谢您的帮助。


问题答案:

选择的答案被证明比改版的慢得多regexp_replace()。创建行以及运行聚合的开销实在太高了。

最快的方法如下:

SELECT
  (length(str) - length(replace(str, replacestr, '')) )::int
  / length(replacestr)
FROM ( VALUES
  ('foobarbaz', 'ba')
) AS t(str, replacestr);

在这里,我们

  1. 取字符串的长度, L1
  2. L1字符串的长度中减去所有替换项后L2得到L3的字符串长度的差。
  3. L3由替换的长度,以获得 事件

为了进行比较,它比使用这种方法的 速度快 大约 五倍regexp_matches()

SELECT count(*)
FROM ( VALUES
  ('foobarbaz', 'ba')
) AS t(str, replacestr)
CROSS JOIN LATERAL regexp_matches(str, replacestr, 'g');


 类似资料:
  • 本文向大家介绍计算字符串中子串出现的次数。相关面试题,主要包含被问及计算字符串中子串出现的次数。时的应答技巧和注意事项,需要的朋友参考一下 【参考答案】

  • 问题内容: 如何计算给定子字符串在Python字符串中出现的次数? 例如: 问题答案: , 像:

  • 我需要返回一个字典,该字典计算预定列表中每个字母出现的次数。问题是我需要把大小写字母都算成一样,所以我不能用.low或.uper。 因此,例如,如果“t”是要搜索的字母,“This is a Python String”应该返回{nt':3}。 这是我目前所掌握的... 其中'letters'是条件,fullText是我正在搜索的字符串。 这里很明显的问题是,如果测试是“t”而不是“t”,我的代码

  • 问题内容: 计算字符串中字符出现次数的最简单方法是什么? 例如,计算出现在其中的次数 问题答案: 返回sub范围中的子字符串不重叠的次数。可选参数并以片表示法解释。

  • 问题内容: 我需要计算一个字符在一个字符串中出现的次数。 例如,假设我的字符串包含: 我想找到逗号字符的数量,即3。以及沿逗号分割后的各个字符串的数量,即4。 我还需要验证每个字符串,即str1或str2或str3或str4不应超过15个字符。 问题答案: 我已经更新了这个答案。我喜欢更好地使用比赛的想法,但是比较慢: 如果您事先知道要搜索的内容,则使用正则表达式文字;如果不知道,则可以使用构造函

  • 本文向大家介绍计算Python中字符串中字符的出现次数,包括了计算Python中字符串中字符的出现次数的使用技巧和注意事项,需要的朋友参考一下 给我们一个字符串和一个字符。我们想找出给定字符在给定字符串中重复多少次。 随着范围和镜头 我们设计了一个for循环,以使该字符与字符串中存在的每个可通过索引访问的字符匹配。range和len函数可帮助我们确定从字符串的左移到右移时必须进行多少次匹配。 示例