我正在将数据从oracle表提取到文本文件,并且下面有数字列。当我在文件中选择以下列时,它会给我所有我想抑制的前导零。
Select ltrim(col_1,'0'),ltrim(col_2,'0'),ltrim(col_3,'0') from table1
数据类型:
Col_1 ---NUMBER(10,2),
Col_2 ---NUMBER(38,0),
Col_3 ---NUMBER(15,1)
当前输出:
00000303.44|0| 00000000000008.2
00000000.00|26| 00000000000030.2
00000473.40|0| 00000000000010.0
预期输出:
303.44|0|8.2
0|26|30.2
473.4|0|10
请让我知道是否需要更改数据类型以获取期望的输出。我什至尝试TO_CHAR(TRIM(LEADING 0 FROM col_name)
我没有得到预期的输出。
答案 0 :(得分:0)
这是由数据阶段作业的最后一个输出阶段中设置的数据类型引起的。如果将一列设置为小数,则datastage将使用前导零填充其余位置,最大保留为十进制字段的大小。 解决此问题的最简单方法是在文件输出阶段之前进行转换,并在最后阶段修剪所有前导零以将所有列转换为varchar。
答案 1 :(得分:0)
由于数据不是数量,可能是varchar / varchar2;
需要转换;您可以使用to_number来解决此问题;
在以下情况下使用您的示例数据之一
选择
to_number(00000000000008.2)作为num1,
to_number('00000000000008.2')作为chr1,
trim(00000000000008.2)为num2,
trim('00000000000008.2')作为chr2,
ltrim(00000000000008.2,'0')为num3,
ltrim('00000000000008.2','0')为char3
来自双重