Informatica中SUBSTR(string,0,3)与SUBSTR(string,1,3)结果一致的差异咨询
Informatica SUBSTR函数起始位置0和1的差异
这是Informatica对SUBSTR函数的参数兼容设计导致的,具体规则如下:
- 当起始位置参数为正整数时,函数从字符串左数对应位置的字符开始截取,传
1就代表从第一个字符开始,这是标准的字符串下标处理逻辑。 - 当起始位置参数为
0时,Informatica会自动将其等价为1处理,同样从第一个字符开始截取,这就是两个写法返回结果一致的原因。 - 只有当起始位置参数为负整数时,逻辑会发生变化:函数会从字符串末尾倒序计数,从倒数第N个字符开始截取,例如
SUBSTR('809-555-444', -3, 3)会返回末尾的444。
示例验证
以字段PHONE取值为809-555-444为例:
SUBSTR(PHONE, 0, 3):0被识别为等价于1,从第1位开始取3个字符,返回809SUBSTR(PHONE, 1, 3):直接从第1位开始取3个字符,返回809
使用建议
虽然截取前缀时两个写法结果一致,还是推荐统一使用1作为起始位置的起始值:
- 符合绝大多数数据库、编程语言的字符串函数通用逻辑,避免跨场景开发时出现下标混淆。
- 如果后续需要迁移表达式到其他ETL工具,部分工具对
0作为起始位置的处理逻辑不同,甚至会直接报错,使用1兼容性更高。
内容的提问来源于stack exchange,提问作者Adi Sharma
相关产品推荐
相关产品推荐

