为什么在 db2 查询中从十进制转换为字符时会得到前导零?

DMK*_*ing 5 db2 datatypes functions

我有一个名为 length 的列定义为:

TYPE_NAME: DECIMAL 
DATA_TYPE: 3 
COLUMN_SIZE: 9 
BUFFER_LENGTH: 11
DECIMAL_DIGITS: 5 
NUM_PREC_RADIX: 10
Run Code Online (Sandbox Code Playgroud)

当我运行以下选择时:

select char(length) st_length, length from atable
Run Code Online (Sandbox Code Playgroud)

我在 st_length 列上得到前导零:

st_length   length
0043.00000  43.00000
0043.00000  43.00000
0045.00000  45.00000
0044.00000  44.00000
0044.00000  44.00000
0046.00000  46.00000
Run Code Online (Sandbox Code Playgroud)

为什么我得到前导零以及如何摆脱它们?


编辑:我本来想早点说的,但忘了。我正在使用 db2 v9.5.8 LUW。


解决方案:我最初的目标是获得长度最左边的字符。我结束了这个:

select left(char(cast(length as int)),1) st_length, length from atable 
Run Code Online (Sandbox Code Playgroud)

这产生了,

st_length  length
4          43.00000
4          43.00000
4          45.00000
4          44.00000
4          44.00000
4          46.00000
Run Code Online (Sandbox Code Playgroud)

欢迎改进。

gbn*_*gbn 3

这是设计使然。有关更多信息,请参阅v9.7 的行为更改。

我建议你需要LPAD中的VARCHAR并带有前导空格