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

如何编写query统计列表列每个单元格内的字符串元素总数

实现方案

你当前存储的是逗号分隔的字符串格式列表,统计单元格内元素总个数不需要做复杂的字符串拆分,用基础字符串函数即可实现,核心逻辑是:分隔符数量+1=元素总个数。

最高效通用写法(兼容MySQL、PostgreSQL、Spark SQL、Hive、ClickHouse等绝大多数SQL引擎)

通过计算字符串中逗号的总数量,再加1就能得到元素总数,逻辑是用原字符串长度减去移除所有逗号后的字符串长度,差值就是逗号的个数。
对应查询语句如下,把your_table替换成你实际的表名即可:

SELECT
  String,
  (LENGTH(String) - LENGTH(REPLACE(String, ',', ''))) + 1 AS Count
FROM your_table;

边界情况处理:如果你的数据存在首尾多余逗号(例如,apple,orange,peach,这类格式),可以先对字段做裁剪再计算,避免计数错误:

SELECT
  String,
  (LENGTH(TRIM(BOTH ',' FROM String)) - LENGTH(REPLACE(TRIM(BOTH ',' FROM String), ',', ''))) + 1 AS Count
FROM your_table;

各引擎专用数组拆分写法

如果你的数据库原生支持数组类型,也可以先把字符串按分隔符拆分为数组,再直接统计数组长度,结果和上面的写法完全一致:

  • PostgreSQL 写法:
SELECT
  String,
  array_length(string_to_array(String, ', '), 1) AS Count
FROM your_table;
  • Spark SQL/Hive 写法:
SELECT
  String,
  size(split(String, ', ')) AS Count
FROM your_table;
  • BigQuery 写法:
SELECT
  String,
  ARRAY_LENGTH(SPLIT(String, ', ')) AS Count
FROM your_table;

以上写法针对你给出的示例数据,会返回完全匹配预期的结果:第一行字符串有4个逗号,计数为5;第二行字符串有2个逗号,计数为3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:51:21