如何为数字字段填充零?

How to pad zeroes for a number field?

如何在整数的左侧填充零 (lpad) 并在小数点分隔符后的小数点右侧填充零 (rpad)。

例如:如果我有 5.95 我想得到 00005950(没有分隔符)。

乘法和 lpad():

select lpad(col * 1000, 8, '0')
. . .

如果您希望该值达到千分之一但不超过小数部分,则可以乘以 1000,然后 FLOOR 或使用 TRUNC。像这样:

SELECT TO_CHAR( TRUNC( value * 1000 ), '00000009' )
FROM   table_name;

或:

SELECT LPAD( TRUNC( value * 1000 ), 8, '0' )
FROM   table_name;

使用 TO_CHAR 将仅允许基于格式掩码设置的最大位数(如果值超过此大小,则它将显示 #s 而不是数字)但它会处理负数(将减号放在前导零之前)。

使用 LPAD 将允许任何大小的输入,但如果输入为负,则减号将位于字符串的中间(在任何前导零之后)。

尝试以下操作:

select lpad(5.42562 * POWER(10, length(trim(regexp_replace(5.42562, '[^.]+\.(.*)$', '.')))-1), 8, '0') from dual;

其中 5.42562 是您想要的列。

所以基本上,您使用的是 Gordon Linoff 的答案,但乘以 10 的小数位数。

select lpad(rpad(replace('5.95','.',''),4,0),8,0) from dual;

假设你有或没有比例尺,string 必须是后缀 0 和前缀 0 直到第 8 位。我正在发布查询。

让我知道这是否满足您的要求或任何其他要求。

select lpad(rpad(replace('5.95','.',''),4,0),8,0) from dual;