BigQuery中对字符串拆分结果执行TRIM去多余空格的方法咨询
解决方案
错误原因
你之前对AZE、EPI字段整体执行TRIM,仅能清理字段首尾的空格,无法处理字段内部、拆分后每个元素前后携带的多余空格。
最优实现写法
直接对UNNEST拆分后生成的每一行SYMB元素执行TRIM即可,写法最简洁,性能也无额外损耗:
WITH students AS ( SELECT AZE, EPI, TRIM(SYMB) AS SYMB FROM schools.boston, UNNEST(SPLIT(AZE, ',') || SPLIT(EPI, ',')) AS SYMB )
提示:你原有查询语句中
SYMB字段后多了一个多余的逗号,会触发语法错误,上述代码已经同步修复了该问题。
可选进阶写法
如果后续需要用到处理后的完整数组,可以在拆分阶段用TRANSFORM对数组内所有元素批量去空格后再展开:
WITH students AS ( SELECT AZE, EPI, SYMB FROM schools.boston, UNNEST( TRANSFORM(SPLIT(AZE, ','), item -> TRIM(item)) || TRANSFORM(SPLIT(EPI, ','), item -> TRIM(item)) ) AS SYMB )
处理后效果
你的示例输入经过上述代码处理后,输出结果如下,无多余空格:
id 1 - row 1:english id 1 - row 2:chinese id 1 - row 3:french id 1 - row 4:math id 1 - row 5:physics
内容的提问来源于stack exchange,提问作者Pierre-Alexandre
相关产品推荐
相关产品推荐

