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

如何在BigQuery中合并并去重逗号分隔数字列?

在BigQuery中合并逗号分隔数字列并去重的最优方法

直接通过拆分-去重-聚合的步骤就能实现,这是BigQuery中处理这类需求的高效方案:

假设你的数据表名为your_table,执行以下SQL即可得到目标结果:

SELECT STRING_AGG(DISTINCT trimmed_num, ', ' ORDER BY trimmed_num) AS unique_numbers
FROM your_table,
UNNEST(SPLIT(numbers, ', ')) AS trimmed_num

步骤说明:

  1. 拆分字符串:SPLIT(numbers, ', ') 将每行的逗号分隔字符串拆分为数组,这里用, (逗号加空格)作为分隔符,匹配你数据里的格式。
  2. 展开数组为行:UNNEST(...) 把拆分后的数组展开成单独的行,每个数字占一行,方便后续去重。
  3. 去重:DISTINCT trimmed_num 过滤掉重复的数字。
  4. 重新聚合:STRING_AGG(..., ', ' ORDER BY trimmed_num) 把去重后的数字用, 连接成字符串,ORDER BY 保证结果按数字顺序排列(如果不需要排序可以去掉)。

鲁棒性优化(处理分隔符不统一的情况)

如果你的数据里逗号前后的空格不固定(比如有的是123,983,有的是123 , 983),可以先统一清理格式再拆分:

SELECT STRING_AGG(DISTINCT TRIM(num_part), ', ' ORDER BY TRIM(num_part)) AS unique_numbers
FROM your_table,
UNNEST(SPLIT(REGEXP_REPLACE(numbers, r'\s*,\s*', ','), ',')) AS num_part

这段代码先用REGEXP_REPLACE把所有逗号前后的空格替换成纯逗号,再拆分,最后用TRIM确保每个数字没有多余空格,兼容更多格式的输入数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:20:32