oracle保存小数点前为"0"的问题

oracle保存小数点前为"0"的问题

2011-11-01 15:35:48| 分类: oracle开发 |字号 订阅
1、直接使用to_char函数

首先实验一下将小数点前和小数点后都加上99999999的格式:

SQL> select to_char(num,'999999999.999999999') from t1_number;

TO_CHAR(NUM,'9999999
--------------------
.326800000
.579656860
52345234.568600000
4.552686000
5.292000000

发现小数点前还是没有0,而小数点后的0多出来了
再实验一下小数点前和小数点后都加上0000000000格式:

SQL> select to_char(num,'00000000000.000000000') from t1_number;

TO_CHAR(NUM,'000000000
----------------------
00000000000.326800000
00000000000.579656860
00052345234.568600000
00000000004.552686000
00000000005.292000000

发现小数点前是有0了,但是两边的0都多出来了,使用FM来去掉多于的0:

SQL> select to_char(num,'fm00000000000.000000000') from t1_number;

TO_CHAR(NUM,'FM0000000
----------------------
00000000000.326800000
00000000000.579656860
00052345234.568600000
00000000004.552686000
00000000005.292000000

没有效果,说明FM只能去掉用9表示的格式中产生的0:

SQL> select to_char(num,'fm999999999.999999999') from t1_number;

TO_CHAR(NUM,'FM99999
--------------------
.3268
.57965686
52345234.5686
4.552686
5.292

但是这样还是没有0,最后发现可以将小数点前的第一位置为0即可(注意9的个数要大于数值的位数):

SQL> select to_char(num,'fm999999990.999999999') from t1_number;

TO_CHAR(NUM,'FM99999
--------------------
0.3268
0.57965686
52345234.5686
4.552686
5.292

检查一下第一位,没有问题:

SQL> select substr(to_char(num,'fm999999990.999999999'),1,1) from t1_number;

SU
--
0
0
5
4
5

2、使用decode函数

既然小于1的小数首位必然是'.',那就判断首位是否为'.',是则在前面加上'0'即可

SQL> select decode(substr(num,1,1),'.','0'||num,num) from t1_number

DECODE(SUBSTR(NUM,1,1),'.','0'||NUM,NUM)
-----------------------------------------
0.3268
0.57965686
52345234.5686
4.552686
5.292

同样检查一下第一位,没有问题

SQL> select substr(decode(substr(num,1,1),'.','0'||num,num),1,1) fro
m t1_number;

SU
--
0
0
5
4
5
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值