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

如何使用SQL(BigQuery)对数字字符串求和?

在BigQuery中计算超长数字字符串的各位数字之和

嘿,这个需求其实很容易实现,我给你分享两种在BigQuery里常用的方法,都能轻松搞定超长数字字符串的各位求和:

方法一:用SPLIT + UNNEST拆分求和

这是最直接的方式,把字符串拆成单个字符,转成数字后求和:

SELECT SUM(CAST(num AS INT64)) AS total_sum
FROM UNNEST(SPLIT('670000000000100000000000000000000000000000000000000000000000000', '')) AS num

原理说明:

  • SPLIT(字符串, ''):将输入的超长数字字符串按空字符拆分,得到一个包含每个单个数字字符的数组
  • UNNEST():把数组转换成一行一行的记录,每个数字字符占一行
  • CAST(num AS INT64):把字符串类型的数字转换成整数
  • SUM():对所有整数求和,得到最终结果(你的例子里就是6+7+1=14)

方法二:用正则提取 + UNNEST(适合复杂场景)

如果你的字符串里可能混有非数字字符(虽然你现在的输入都是数字,但这个方法更通用),可以用正则提取所有数字后再求和:

SELECT SUM(CAST(num AS INT64)) AS total_sum
FROM UNNEST(REGEXP_EXTRACT_ALL('670000000000100000000000000000000000000000000000000000000000000', r'\d')) AS num

原理说明:

  • REGEXP_EXTRACT_ALL(字符串, r'\d'):用正则表达式提取字符串中所有的单个数字字符,返回数组
  • 后续的UNNEST、CAST和SUM操作和方法一完全一致

如果字符串来自表字段的场景

如果你的数字字符串是存储在某个表的字段里(比如表叫your_table,字段叫digit_string),可以用下面的查询批量计算:

SELECT 
  digit_string,
  SUM(CAST(num AS INT64)) AS total_sum
FROM your_table,
UNNEST(SPLIT(digit_string, '')) AS num
GROUP BY digit_string

这样就能为表中每一行的数字字符串计算各位之和啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:47:32