sql - Postgresql - 计算 ILIKE 查询结果中子字符串实例的数量

标签 sql postgresql

我有一个像这样的查询,它返回与给定查询匹配的文本行:

SELECT content 
FROM messages 
  WHERE created_at >= '2021-07-24T20:17:18.141Z'
        AND created_at <= '2021-07-31T20:11:20.542Z'
        AND content ILIKE '%Search Term%';

现在,如果我只计算行数,它只会返回带有该搜索词的消息数。但是,我想计算搜索词的实例数量,而不是包含搜索词的行数。

我想制作一个存储函数,循环遍历上述函数的结果并计算实例数。但它最终变得异常缓慢。我可以接受它很慢,但是有没有一个解决方案可以运行得稍微快一点或者不需要函数?

最佳答案

试试这个:

SELECT
  SUM(
    CASE
      WHEN content ILIKE '%Search Term%' THEN 1
      ELSE 0
    END
  )
FROM
  messages 
WHERE
  created_at >= '2021-07-24T20:17:18.141Z' AND
  created_at <= '2021-07-31T20:11:20.542Z';

关于sql - Postgresql - 计算 ILIKE 查询结果中子字符串实例的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68694439/

相关文章:

SQL Server 2012 如何判断表A中的所有值是否在表B中

sql - 改进/优化 SQL Server 中的 LEFT JOIN

基于测量子集的最小/最大日期的 SQL 性能

php - 从一个数据库读取数据并使用 PHP 插入另一个数据库时出现编码错误

Python:读取PostgreSQL表的关系(外键表)

postgresql - 如何检查postgresql备份是否成功?

sql - 如何从父字符串中分离出结果?

sql - 在执行 postgresql 函数时返回错误值的语法

postgresql - EMR-Spark 将带有字符串数组的 DataFrame 写入 S3 的速度很慢

sql - Pentaho 与 PostgreSQL 的连接