You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计SQLite单元格中子字符串匹配次数?附示例查询构造

如何在SQLite中统计单元格中子字符串的匹配次数?

嘿,这个问题我刚好处理过!SQLite本身没有内置的函数直接统计子字符串的出现次数,但我们可以通过字符串长度差值法来实现,思路非常直观:

核心原理

把目标子串从原字符串中全部替换为空字符串,用原字符串的长度减去替换后的字符串长度,得到的差值就是所有目标子串的总长度。再用这个差值除以单个目标子串的长度,就能得到出现次数啦。

针对你的需求的具体实现

假设你的表名为your_table,存储字符串的字段名为content,要统计的单词是row:

1. 区分大小写的统计(仅匹配小写"row")

如果需要严格区分大小写(比如只算小写的"row",不算大写的"Row"),直接使用REPLACE函数:

SELECT 
  (LENGTH(content) - LENGTH(REPLACE(content, 'row', ''))) / LENGTH('row') AS row_count
FROM your_table;

在你的示例字符串"Row row row your boat,"中,这个查询会返回2(因为只有两个小写的"row")。

2. 不区分大小写的统计(匹配所有大小写形式的"row")

如果需要忽略大小写,把原字符串和目标子串统一转成小写(或大写)后再处理:

SELECT 
  (LENGTH(content) - LENGTH(REPLACE(LOWER(content), 'row', ''))) / LENGTH('row') AS row_count
FROM your_table;

这个查询会把原字符串中的Row转成row,替换后计算得到的结果就是3,正好符合你的需求。

额外优化:处理NULL值

如果字段可能存在NULL,可以用IFNULL函数把结果转为0,避免返回NULL:

SELECT 
  IFNULL((LENGTH(content) - LENGTH(REPLACE(LOWER(content), 'row', ''))) / LENGTH('row'), 0) AS row_count
FROM your_table;

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:57:47