对参数定位情况使用解码



我有一个包含13位数字列表的表格。

我想使用 informatica 将这些数字分解并根据案例分开。

例如,我有数字1196804120316。对于第一种情况,我只想取 68 之后的两位数。在我们的示例中,我提取数字 04 并将其存储在一列中。

它的 SQL 代码是:

CASE WHEN ODS_CI_RPT.ADMIN.REGEXP_LIKE(DEC_REGISTRN_NBR,'^(19|20)?[0-9]{2}-[0-9]{2}-[0-9]{5,6}$') 
THEN
ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'.*-([0-9]{2})-.*','1',1,1)
ELSE '05'
END
AS 
STATE_CODE

下一种情况是取 19 之后的数字并存储它。在这种情况下,68。该 SQL 是:

CASE WHEN  ODS_CI_RPT.ADMIN.REGEXP_LIKE(DEC_REGISTRN_NBR,'^(19|20)?[0-9]{2}-[0-9]{2}-[0-9]{5,6}$') THEN
 ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{2,4})-.*','1',1,1)
 ELSE ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{4})-.*','1',1,1)
 END
 AS 
 D_BIRTH_YEAR,

我将如何在信息中使用解码来实现这一点?

你能试试吗:

WITH
input(literal) AS (
SELECT '1196804120316'
)
SELECT 
  -- use below in PowerCenter
  MONTH(TO_DATE(SUBSTR(literal,2),'YYYYMMDDHHMI')) 
  -- use above in PowerCenter
  AS the_month
FROM input;
the_month
        4

Power Center提供Oracle的所有功能。所以只需使用我上面显示的公式.....

我的解决方案是在表达式中使用 SUBSTR((。从表中导入源后,我使用了:

SUBSTR(COLUMN_NAME,6,2)

告诉 Informatica 我想分解字符串的哪个位置。一旦它被分解,表达式就会将其捕获到一个变量中。

相关内容