DataStage中如何识别和转换一串数字?

How to identify and convert a series of numbers in DataStage?

我需要识别一个字段中的值,这些值属于 9 系列且大于或等于 99999,并在 DataStage 中将它们转换为 0,即该字段的至少前 5 个字节是 9。这里有一些例子可以更好地解释这种情况 999.00 - 不要转换 9999.00- 不转换 99999.00- 转换为 0 999991.00-转换为0 100000.00- 不转换 999999.00- 转换为 0 123456.00-不转换 9999999.00-转换为0 1999999.00-不转换 1000000.00-不转换

现在我有 If Convert('9','', Trim(Trim(Field(NullToZero(AMT),'.',1)),'0', 'L')) = '' 然后 0。这会转换任何 9,但我们的目标是仅转换 99999 和更大的 9。请帮忙解决

使用 Field() 函数仅处理小数点占位符左侧的数字。测试这个值至少有五个字符,并且都是“9”。

If Len(Field(AMT,".",1,1) >= 5 And Convert("9","",Field(AMT,".",1,1)) = "" Then 0 Else AMT

更好的方法是将 Field() 函数解析为阶段变量,这样它就不会执行两次,并在表达式中使用该阶段变量。