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

如何在BigQuery中提取数组每个元素的最后8位字符

在BigQuery中提取数组每个元素的最后8位字符

你遇到的错误是因为RIGHT()函数仅支持处理单个字符串,而JSON_EXTRACT_STRING_ARRAY()返回的是字符串数组,无法直接作为RIGHT()的参数。要实现对数组每个元素的批量处理,可使用以下两种方案:

方案1:使用ARRAY_TRANSFORM(推荐)

ARRAY_TRANSFORM是BigQuery专为数组元素转换设计的函数,能直接遍历数组并对每个元素应用指定逻辑:

SELECT
  ARRAY_TRANSFORM(
    JSON_EXTRACT_STRING_ARRAY(your_column_name),
    element -> RIGHT(element, 8)
  ) AS last_8_chars_array
FROM
  your_table_name;

说明:

  • JSON_EXTRACT_STRING_ARRAY(your_column_name):将JSON格式的数组列转换为BigQuery原生字符串数组。
  • element -> RIGHT(element, 8):遍历数组每个元素,提取其最后8位字符;若元素长度不足8位,RIGHT()会直接返回整个字符串。

方案2:使用UNNEST + ARRAY_AGG

先将数组拆分为单行记录处理,再重新聚合为数组:

SELECT
  ARRAY_AGG(RIGHT(element, 8)) AS last_8_chars_array
FROM
  your_table_name,
  UNNEST(JSON_EXTRACT_STRING_ARRAY(your_column_name)) AS element;

说明:

  • UNNEST(...) AS element:将数组展开为多行,每行对应一个数组元素。
  • RIGHT(element, 8):对每个展开后的元素提取最后8位。
  • ARRAY_AGG(...):将处理后的单行结果重新组合为数组。

示例效果

针对你提供的输入数组:

输入:["551199999999","55129999999999","5532999999999"]
处理后输出:["99999999","99999999","99999999"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:54:23