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
相关产品推荐
相关产品推荐

