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

BigQuery中将无分隔符变长字符串拆分至多列的方法求助

BigQuery 拆分无分隔符变长字符串至多列

直接用SUBSTR结合CASE WHEN就能实现需求,以下是完整SQL示例:

WITH sample_data AS (
  SELECT 'ABCDEF' AS ColumnA UNION ALL
  SELECT 'GHIPQRS' AS ColumnA UNION ALL
  SELECT 'AB' AS ColumnA UNION ALL
  SELECT 'A' AS ColumnA
)
SELECT
  ColumnA,
  -- 截断末尾1个字符,结果长度≥2则保留,否则为空
  CASE WHEN LENGTH(ColumnA) - 1 >= 2 THEN SUBSTR(ColumnA, 1, LENGTH(ColumnA)-1) ELSE NULL END AS ColumnB,
  -- 截断末尾2个字符
  CASE WHEN LENGTH(ColumnA) - 2 >= 2 THEN SUBSTR(ColumnA, 1, LENGTH(ColumnA)-2) ELSE NULL END AS ColumnC,
  -- 截断末尾3个字符
  CASE WHEN LENGTH(ColumnA) - 3 >= 2 THEN SUBSTR(ColumnA, 1, LENGTH(ColumnA)-3) ELSE NULL END AS ColumnD,
  -- 截断末尾4个字符
  CASE WHEN LENGTH(ColumnA) - 4 >= 2 THEN SUBSTR(ColumnA, 1, LENGTH(ColumnA)-4) ELSE NULL END AS ColumnE,
  -- 保留前两个字符,原字符串长度≥2则保留
  CASE WHEN LENGTH(ColumnA) >= 2 THEN SUBSTR(ColumnA, 1, 2) ELSE NULL END AS ColumnF
FROM sample_data;

逻辑说明

  • SUBSTR(ColumnA, 1, LENGTH(ColumnA)-n):从字符串开头截取到倒数第n个字符,实现“截断末尾n个字符”的效果。
  • CASE WHEN 判断:确保截取后的字符串长度至少为2,不满足则返回空(NULL),符合“不足则为空”的要求。
  • Column F直接截取前两个字符,仅当原字符串长度≥2时保留结果。

运行结果

ColumnAColumnBColumnCColumnDColumnEColumnF
ABCDEFABCDEABCDABCABAB
GHIPQRSGHIPQRGHIPQGHIPGHIGH
ABNULLNULLNULLNULLAB
ANULLNULLNULLNULLNULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 09:55:05