如何在IBMDataStage的transformer阶段从Integer中提取第一个数字



我有一个整数字段要来,我想从字段中提取第一个数字,我该怎么做?我不能强制转换字段,因为数据来自数据集,有办法从IBM datastage的transformer阶段提取第一个数字吗?

示例:

输入:ABC = 1234

输出:1

有人能帮我做同样的事吗?

谢谢!

使用转换器,将阶段变量定义为varchar,并使用此公式获取子字符串

ABC[1,1] 

或者,您也可以使用DecimalToString 转换您的数值

您可以在表达式的上下文中转换为字符串,如果结果需要是整数,则可以再次转换。AsInteger(左(ln_jn_ENCNTR_DTL.CCH,1(此解决方案使用了从整数到字符串的隐式转换。它假定CCH的值始终是一个整数。

我想说的是,如果ABC的类型为int,则可以定义长度为1的char类型的阶段变量。那么您需要先将Number转换为string。并使用Left函数提取第一个字符。左(十进制到字符串(ABC(,1(。

如果您将ABC作为字符串,则可以直接应用left函数。

您可以首先定义varchar类型的阶段变量(名称如SV((将输入整数列转换为varchar(:阶段变量定义

现在将输入整数列分配给阶段变量SV,并将输出整数列派生为AsInteger(SV[1,1](:列定义

即输入整数=>(类型转换为varchar(阶段变量=>子串[1,1]和使用AsInteger的子串到Integer的转换。

DecimalToString是一个隐式转换,所以您只需要Left((函数。Left(MyString,1)

最新更新