使用解码参数定位案例
Using decode for parameter positioning cases
我有一个 table,其中包含一个 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)
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)
ELSE ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{4})-.*','',1,1)
END
AS
D_BIRTH_YEAR,
我如何使用 informatica 中的 decode 实现这个?
你能试试吗:
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()。从 table 导入源后,我使用了:
SUBSTR(COLUMN_NAME,6,2)
告诉 Informatica 我想分解字符串的哪个位置。一旦它被分解,表达式就会将它捕获到一个变量中。
我有一个 table,其中包含一个 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)
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)
ELSE ODS_CI_RPT.ADMIN.REGEXP_REPLACE(DEC_REGISTRN_NBR,'^([0-9]{4})-.*','',1,1)
END
AS
D_BIRTH_YEAR,
我如何使用 informatica 中的 decode 实现这个?
你能试试吗:
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()。从 table 导入源后,我使用了:
SUBSTR(COLUMN_NAME,6,2)
告诉 Informatica 我想分解字符串的哪个位置。一旦它被分解,表达式就会将它捕获到一个变量中。