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

Big Query:如何将字符串类型转换为数组?

BigQuery 字符串转数组的实现方案

下面针对几种常见的字符串格式,给出具体的转换方法:

1. 分隔符分隔的字符串(如逗号、分号分隔)

如果你的字符串是用固定分隔符(比如逗号)拼接的,直接用SPLIT()函数就能转成数组:

SELECT SPLIT('apple,banana,orange', ',') AS fruit_array;

如果字符串里的元素带多余空格,可以结合TRIM()和UNNEST()清理:

SELECT ARRAY(
  SELECT TRIM(value) 
  FROM UNNEST(SPLIT('apple , banana , orange', ',')) AS value
) AS cleaned_fruit_array;

2. JSON格式的字符串数组

如果字符串本身是标准JSON数组格式(比如'["a","b","c"]'),用JSON_EXTRACT_ARRAY()函数直接解析:

SELECT JSON_EXTRACT_ARRAY('["a","b","c"]') AS json_array;

如果需要将数组元素转换为特定数据类型(比如整数),可以嵌套转换:

SELECT ARRAY(
  SELECT CAST(value AS INT64) 
  FROM UNNEST(JSON_EXTRACT_ARRAY('[1,2,3]')) AS value
) AS int_array;

3. 自定义格式的字符串

如果字符串是自定义包裹格式(比如"(apple)(banana)(orange)"),先通过正则替换清理格式,再拆分:

SELECT SPLIT(
  REGEXP_REPLACE('(apple)(banana)(orange)', r'^\(|\)$', ''), 
  ')\('
) AS custom_array;

注意事项

  • 若原字符串为空,可使用IFNULL()避免返回NULL:IFNULL(SPLIT(empty_string, ','), [])
  • 拆分后如果需要去重,可以在ARRAY()里加DISTINCT:ARRAY(SELECT DISTINCT TRIM(value) FROM UNNEST(SPLIT(column_name, ',')) AS value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:32