SQL按指定顺序拼接字符串的更优实现方案咨询
优化实现方案
原有实现依赖自定义UDF,且存在多次字符串拆分、拼接的冗余操作,可直接用内置数组函数简化逻辑,执行效率和可读性都更好,和你期望输出完全匹配的优化代码如下:
WITH TBL_D_CUSTOMER AS ( SELECT "1" AS NUMBER,"T01" AS DEAL_NUMBER,"TOM" AS NAME1, "JERRY" AS NAME2 UNION ALL SELECT "2","T02","LEBRON","STEVEN" ) SELECT *, ARRAY_TO_STRING( ARRAY_CONCAT( ARRAY_REVERSE(ARRAY_AGG(NAME1) OVER()), ARRAY_REVERSE(ARRAY_AGG(NAME2) OVER()) ), ' ' ) AS NAME_COM FROM TBL_D_CUSTOMER
优化说明
- 完全移除自定义临时函数,无需额外维护UDF逻辑,代码更简洁
- 省去了原有方案中「字段聚合为字符串→拆分字符串为数组→反转数组→拼接回字符串」的冗余步骤,直接对聚合后的数组操作,性能更高
- 如果你需要按交易号分组拼接姓名,仅需要在窗口函数中加回
PARTITION BY DEAL_NUMBER即可。
内容的提问来源于stack exchange,提问作者SimonGan
相关产品推荐
相关产品推荐

