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

如何用SQL统计含指定字符的表条目数及按字符分组统计?

问题1:统计指定列中包含字符A、B、C的条目数量

先分两种常见场景给你方案,按需选择:

场景1:分别统计包含A、B、C的条目数(重复条目会被多次计数,比如同时含A和B的条目会在A、B的统计里各算一次)

假设你的表叫your_table,目标列是target_col,用UNION ALL结合COUNT就能实现:

SELECT 'A' AS Characters, COUNT(*) AS `COUNT(*)` FROM your_table WHERE target_col LIKE '%A%'
UNION ALL
SELECT 'B' AS Characters, COUNT(*) AS `COUNT(*)` FROM your_table WHERE target_col LIKE '%B%'
UNION ALL
SELECT 'C' AS Characters, COUNT(*) AS `COUNT(*)` FROM your_table WHERE target_col LIKE '%C%';

场景2:统计至少包含A、B、C中任意一个的总条目数(重复条目只算一次)

这种情况直接用OR关联过滤条件就行:

SELECT COUNT(*) AS total_matching_entries
FROM your_table
WHERE target_col LIKE '%A%' 
   OR target_col LIKE '%B%' 
   OR target_col LIKE '%C%';

问题2:统计格式为'A.B'类列中各字符的出现次数(按字符分组)

针对这种点分隔的双字符格式,核心思路是先把每个字符拆分开,再分别统计。用UNION ALL提取每个位置的字符,再聚合分组,就能得到你要的结果:

假设表名是your_table,目标列是target_col,SQL语句如下:

SELECT
  character AS Characters,
  COUNT(*) AS `COUNT(*)`
FROM (
  -- 提取点前面的第一个字符
  SELECT SUBSTRING(target_col, 1, 1) AS character
  FROM your_table
  WHERE target_col REGEXP '^[A-Z]\\.[A-Z]$' -- 可选:只处理符合格式的条目
  UNION ALL
  -- 提取点后面的第二个字符
  SELECT SUBSTRING(target_col, 3, 1) AS character
  FROM your_table
  WHERE target_col REGEXP '^[A-Z]\\.[A-Z]$' -- 可选:只处理符合格式的条目
) AS split_chars
WHERE character IN ('A', 'B', 'C', 'D') -- 可选:只统计指定的几个字符
GROUP BY character
ORDER BY character;

小说明:

  • SUBSTRING(target_col,1,1)取第一个字符,SUBSTRING(target_col,3,1)取第三个位置的字符(因为中间的点占了第二个位置)。
  • UNION ALL会保留所有拆分后的字符,所以像'A.C'这样的条目,会被拆成'A'和'C',各自计入对应字符的统计数里。
  • 加的两个WHERE条件是可选的,用来过滤掉不符合'A.B'格式的无效数据,避免影响统计结果。

执行这条SQL就能得到你预期的分组统计表格啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:00