0

我有一个问题,其中有一个金额字段,其中包含 (-98765.00),minus{spaces]{numbers} 之类的数据,我需要删除减号和数字之间的空格并得到 (-98765.00),我如何在表达转换中做到这一点。

字段数据类型为十进制 (8,2)。

谢谢,基兰

4

3 回答 3

0

如果我的理解是正确的,您需要同时替换spacesbrackets。这是表达式:

TO_DECIMAL(
    REPLACECHR(0,
        REPLACECHR(0, '(- 98765.00)', ' ', '') -- this part does the space replacement
    , '()', '') -- this part replaces the brackets
)
于 2016-09-21T09:48:53.300 回答
0
output_port: TO_DECIMAL(REPLACECHR(FALSE,input_port,' ',''))

REPLACECHR 用空字符替换空格,实质上是删除它们。第一个参数可以是 TRUE/FALSE 来指定是否区分大小写,但在这种情况下并不重要。

于 2016-09-20T18:23:51.733 回答
0


您可以使用REG_REPLACE函数替换空格
要实现此目的,您需要按照以下步骤操作,

* 创建两个变量端口
* REG_REPLACE - 函数需要字符串列,因此您需要使用TO_CHAR函数将十进制列转换为字符串列
第一个变量端口(字符串) - TO_CHAR(column_name)
* 在之前的端口数据被转换为字符串,现在再次将其转换为十进制并应用REG_REPLACE函数
第二个变量端口(十进制) - to_decimal(reg_replace(first_variable_port,'s+',''))
s - 确定 informatica 正则表达式中的空格

见下图, 使用您提供的相同数字. 使用相同的数据类型和函数在此处输入图像描述


调试器通过删除下图中的空白来给出确切的结果,

在此处输入图像描述
可能是您正在经历的其他转换有问题。调试和验证一次数据。

希望你明白了,如有任何问题,请随时提出
要享受 informatica,请在https://etlinfromatica.wordpress.com/上玩得开心

于 2016-09-20T18:02:44.427 回答