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

如何用SQLite统计指定字符在另一列子串中的出现次数?

统计Color表字符在Deck表代码列中的出现次数

要实现统计color表中每个字符在deck表code列的出现次数(包含计数为0的字符),你可以通过动态生成模糊匹配条件替换硬编码字符,以下是可行的SQL方案:

方案一:使用交叉连接(CROSS JOIN)

SELECT 
    color.name AS Color,
    SUM(CASE WHEN deck.code LIKE '%' || color.name || '%' THEN 1 ELSE 0 END) AS Count
FROM color
CROSS JOIN deck
GROUP BY color.name
ORDER BY Count, Color;

说明

  • 用'%' || color.name || '%'动态拼接匹配模式,替代你之前硬编码的'%W%',让每个color表中的字符自动生成对应的模糊查询条件。
  • CROSS JOIN会将color表每条记录与deck表每条记录组合,CASE语句判断当前deck的code是否包含该字符,最后通过SUM统计符合条件的次数。即使某个字符在所有deck的code中都未出现,SUM结果也会是0,满足需求。

方案二:使用左连接(LEFT JOIN)(更高效)

如果deck表数据量较大,左连接可减少不必要的组合,提升查询效率:

SELECT 
    c.name AS Color,
    COALESCE(SUM(CASE WHEN d.code LIKE '%' || c.name || '%' THEN 1 ELSE 0 END), 0) AS Count
FROM color c
LEFT JOIN deck d ON d.code LIKE '%' || c.name || '%'
GROUP BY c.name
ORDER BY Count, Color;

说明

  • LEFT JOIN确保color表中的所有字符都会被保留,即使没有任何deck的code包含该字符。
  • COALESCE函数用于处理SUM返回NULL的情况(无匹配deck记录时),将其转换为0,保证结果一致性。

这两个方案都能生成你期望的结果表,包含所有color字符及其对应计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 03:40:07