我有一张包含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,
如何使用informatica中的解码实现此功能?
答案 0 :(得分:0)
你可以尝试一下:
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的所有功能。所以只需使用我上面显示的公式.....
答案 1 :(得分:0)
我的解决方案是在表达式中使用SUBSTR()。从表中导入源代码后,我使用了:
SUBSTR(COLUMN_NAME,6,2)
告诉Informatica我想要分解的字符串的位置。一旦它被分解,表达式就会将它捕获到一个变量中。