我正在尝试将以下Informatica代码翻译为等效的SQL脚本。我有点陷入困境,因为我对Informatica不熟悉,并会感谢任何帮助。
原始的信息代码如下:
LTRIM(RTRIM(SUBSTR(COV_REINS_CONCAT_BK,11, INSTR(COV_REINS_CONCAT_BK, '|',1,3)-INSTR(COV_REINS_CONCAT_BK, '|',1,2)-1 ))) || 'C'
答案 0 :(得分:1)
select LTRIM(RTRIM(SUBSTR(COV_REINS_CONCAT_BK,11,INSTR(COV_REINS_CONCAT_BK,'|',1,3)
-INSTR(COV_REINS_CONCAT_BK,'|',1,2)-1 )))||'C' from TABLE;
上面的脚本在Oracle中可以正常工作。请将表替换为您的表名。
答案 1 :(得分:0)
使用occurrence参数扩展大量使用 INSTR 函数的表达式变得越来越困难。
也许在MS-SQL数据库中创建一个支持occurrence参数的INSTR等效函数会更容易。了解如何创建dbo.INSTR函数here。 在同一站点上,您还可以看到table具有从Oracle到MS-SQL的更多功能等价物。
然后评论中的表达变得更容易翻译:
LTRIM(RTRIM(SUBSTRING(COV_REINS_CONCAT_BK,11,dbo.INSTR(COV_REINS_CONCAT_BK,'|',1,3)
-dbo.INSTR(COV_REINS_CONCAT_BK,'|',1,2)-1 )))+'C'
这里SUBSTR成为 SUBSTRING ,INSTR成为 dbo.INSTR 并连接||改为+。
答案 2 :(得分:0)
SUBSTR()和instr()函数来自Informatica转换语言。恕我直言,它起源于Oracle和MSSQL / Sybase函数名称中的函数名称。这就是为什么它不直接转换为两个而是相似的原因。联机帮助中对这些功能进行了很好的记录。您需要检查INSTR()函数中的开关是否区分大小写等,以确保可以在其他工具中正确编写它们的并行。数字可能会转换为不同的东西,在某些Informatica函数中,可以省略结尾参数,例如在SUBSTR()函数中,这意味着SUBSTR()将从编号位置到字符串的末尾生效。的长度。 Informatica中端口的类型也会影响结果,尽管在这种情况下,组合功能最后会进行修剪。
答案 3 :(得分:-1)
SUBSTR()和INSTR()函数不是MS SQL Server函数。我猜测代码片段是Oracle的PL / SQL。尝试使用http://www.dba-oracle.com/oracle_news/2005_12_16_sql_syntax_differences.htm
等资源