BigQuery中拆分字符串后按指定顺序重新拼接的实现方法
BigQuery 实现指定顺序的字符串拆分重组
针对你需求的字符串格式,可通过以下两种方式实现拆分后按指定顺序拼接:
方法一:直接拆分拼接
直接调用SPLIT函数拆分字符串,按索引取对应部分后拼接:
SELECT original_str, CONCAT( SPLIT(original_str, '-')[OFFSET(4)], SPLIT(original_str, '-')[OFFSET(2)], SPLIT(original_str, '-')[OFFSET(0)], SPLIT(original_str, '-')[OFFSET(3)], SPLIT(original_str, '-')[OFFSET(1)] ) AS new_str FROM your_table;
方法二:预拆分优化(避免重复计算)
通过WITH子句预先拆分字符串为数组,再取对应索引拼接,适合处理大量数据时优化性能:
WITH split_data AS ( SELECT original_str, SPLIT(original_str, '-') AS parts FROM your_table ) SELECT original_str, CONCAT( parts[OFFSET(4)], parts[OFFSET(2)], parts[OFFSET(0)], parts[OFFSET(3)], parts[OFFSET(1)] ) AS new_str FROM split_data;
关键说明:
SPLIT(original_str, '-')将原字符串按-拆分为数组,数组索引从0开始,对应原字符串各段:- 索引0:
xxxx,索引1:yyy,索引2:zzzzz,索引3:aaaaa,索引4:bbbbb
- 索引0:
- 按需求的4、2、0、3、1顺序取数组元素,用
CONCAT拼接成目标字符串 - 如果存在格式不规范的行(拆分后元素不足5个),可将
OFFSET替换为SAFE_OFFSET,避免报错(索引不存在时返回NULL)
内容的提问来源于stack exchange,提问作者Federicofkt
相关产品推荐
相关产品推荐

