如何为数字字段填充零?
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;
如何在整数的左侧填充零 (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;