AWS Redshift替代SQL Server STUFF函数实现首3位替换方案咨询
AWS Redshift 替换列前3位数字为固定值的解决方案
原SQL Server中使用STUFF函数替换列前3位为固定值123的逻辑,在AWS Redshift中可以通过字符串拼接结合SUBSTRING函数实现,以下是可行方案:
完整SQL代码
SELECT CASE WHEN LEN(ColName) >= 3 THEN '123' || SUBSTRING(ColName, 4) ELSE '123' END AS NewColName FROM DataBase.dbo.TableName;
逻辑说明
- 核心逻辑:用固定字符串
'123'拼接原列从第4位开始的子串,完全等价于STUFF(ColName,1,3,'123')的效果。 - 边界处理:通过
CASE语句兼容列值长度不足3位的情况——如果原字符串长度小于3,直接返回'123',确保所有场景都符合需求。 - 函数兼容性:Redshift原生支持
SUBSTRING(也可简写为SUBSTR)和LEN函数,无需额外配置。
示例验证
- 输入:
8010001802000000000209092396→ 输出:1230001802000000000209092396 - 输入:
555209092396→ 输出:123209092396 - 输入:
12→ 输出:123
内容的提问来源于stack exchange,提问作者MeghJeet
相关产品推荐
相关产品推荐

