如何在左侧用零填充整数 (lpad) 并在小数点分隔符后用右侧 (rpad) 填充小数点分隔符。
例如:如果我有 5.95,我想得到 00005950(没有分隔符)。
如何在左侧用零填充整数 (lpad) 并在小数点分隔符后用右侧 (rpad) 填充小数点分隔符。
例如:如果我有 5.95,我想得到 00005950(没有分隔符)。
如果您希望该值达到千分之一但没有更多的小数部分,那么您可以乘以 1000 并FLOOR
使用TRUNC
. 像这样:
SELECT TO_CHAR( TRUNC( value * 1000 ), '00000009' )
FROM table_name;
或者:
SELECT LPAD( TRUNC( value * 1000 ), 8, '0' )
FROM table_name;
UsingTO_CHAR
将仅允许基于格式掩码设置的最大位数(如果值超过此大小,则它将显示#
s 而不是数字),但它将处理负数(将减号放在前导零之前)。
UsingLPAD
将允许任何大小的输入,但如果输入为负,则减号将位于字符串的中间(在任何前导零之后)。
乘法和如何lpad()
:
select lpad(col * 1000, 8, '0')
. . .
尝试以下操作:
select lpad(5.42562 * POWER(10, length(trim(regexp_replace(5.42562, '[^.]+\.(.*)$', '.\1')))-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;