我有一列具有以下值的varchar类型
Values in column Output should be
000025 00.25
002340 23.40
239044 2390.44
000305 3.05
000100 1.00
当我使用to_number时,我得到一个纯数字(例如25,2340,239044),但是我需要在上面指定的十进制数字中使用。
感谢您的帮助。
答案 0 :(得分:0)
也许:
select cast(to_number(val) / 100 as decimal(5, 2))
答案 1 :(得分:0)
假定您的第一个值仅具有一个前导零,则可以将原始字符串转换为数字,除以100,然后使用与所需输出匹配的模型将其格式化为字符串,例如:< / p>
to_char(to_number(orig_str)/100, '9990.00') as new_str
演示:
-- CTE for sample data
with your_table(orig_str) as (
select 000025 from dual
union all select 002340 from dual
union all select 239044 from dual
union all select 000305 from dual
union all select 000100 from dual
)
-- query
select orig_str,
to_char(to_number(orig_str)/100, '9990.00') as new_str
from your_table;
ORIG_STR NEW_STR
---------- --------
25 0.25
2340 23.40
239044 2390.44
305 3.05
100 1.00
如果您要按照问题中所示的对齐方式,将所有值都左对齐而不是小数点对齐,则可以添加the FM
format modifier,以消除填充空格:
select orig_str,
to_char(to_number(orig_str)/100, 'FM9990.00') as new_str
from your_table;
ORIG_STR NEW_STR
---------- --------
25 0.25
2340 23.40
239044 2390.44
305 3.05
100 1.00