如何在IICS中实现Oracle的replace、translate及cast命令逻辑
Oracle 逻辑转 Informatica IICS 对应实现方案
以下实现可直接在IICS数据集成任务的表达式转换、字段映射等场景使用,和原Oracle逻辑执行效果完全一致:
1. 特殊字符清洗逻辑
原Oracle代码:
replace(translate(HDDJD_DG,'²¿àçéèîÀÇɵ',' '),' ','')
原逻辑作用:逐字符匹配字段HDDJD_DG中所有指定的特殊重音字符,先替换为空格,再删除所有空格,最终效果是从字段值中剔除这11个指定特殊字符。
IICS平台两种可选用法:
- 推荐写法(性能最优,单函数完成):
用IICS原生REPLACECHR函数一次性完成所有目标字符剔除,不需要嵌套:
参数说明:第一个参数REPLACECHR(0, HDDJD_DG, '²¿àçéèîÀÇɵ ', '')0代表区分大小写匹配,第三个参数包含所有需要剔除的特殊字符+空格,第四个参数为空串代表直接删除匹配到的字符,执行效果和原Oracle逻辑100%对齐。 - 对齐原代码嵌套写法:
IICS表达式语言同样支持TRANSLATE和REPLACE函数,写法和原Oracle几乎一致,注意TRANSLATE的第三个替换参数需要填入和待替换特殊字符数量相等的空格(此处为11个空格):REPLACE(TRANSLATE(HDDJD_DG, '²¿àçéèîÀÇɵ', ' '), ' ', '')
2. 字符串类型转换逻辑
原Oracle代码:
cast('RAP' as varchar2(3))
原逻辑作用:将字符串常量RAP显式转换为长度为3的可变长字符串类型。
IICS平台对应实现:
- 显式转换写法:IICS中字符串类型为String,用
TO_CHAR函数完成类型转换,指定长度参数即可:TO_CHAR('RAP', 3) - 简化用法:如果是直接给输出端口赋值常量,只需要把对应输出端口的数据类型设置为String、长度配置为3,直接赋值常量
'RAP'即可,不需要额外写转换函数,效果和原cast逻辑完全一致。
补充提示:如果任务配置为Oracle侧全下推执行模式,直接书写原Oracle语法也可正常解析;如果是在IICS平台层的转换组件(非下推SQL节点)中运行,必须使用上述IICS原生函数写法,否则会报语法错误。
内容的提问来源于stack exchange,提问作者Thierry K.
相关产品推荐
相关产品推荐

