Oracle保留位十进制解决方案

Oracle保留位十进制解决方案
公司需要处理一些报告,并使用百分比保留2个小数。独轮和trunc函数可以实现(圆(_data,2)),但格式不是很整齐,而且可以使用圆角时的格式要求不严格。

一种更方便的。
选择解码(n_jg,0,'0.00,修剪(to_char(n_jg,9999999 .99 '))从TBL
如果只检索,但使用:
1、选择trunc(cur_sum,2)从data_record;
十进制转换为百分比= >圆(zcbj / ZS×100)| |%(= = trunc(zcbj / ZS),2)×100 | |%
2。如果您想更新数据,您可以使用它:
更新data_record集cur_sum = trunc(cur_sum,2),rec_no = 123

方法一:利用to_char FM格式
to_char(圆(data.amount,2),'fm9999999999999999.00)数量
缺点是,如果该值为0,它将显示as.00代替0。
另一方面,大量的格式为小数点左边9应该是足够的,否则查询号码将显示为N个符号#。
解决方案如下:
选择解码(工资,0,'0.00 ',(to_char(圆(工资,2),'fm99999999999999.00 ')))从can_do;

方法二:用例结束时判断各种情况。
案例
当仪器(to_char(数据量),然后<1。)
数据量的00 | |。
当仪器(to_char(数据量),' ')+ 1 =长度(数据量)然后
数据量| | '0'。
其他的
to_char(圆(data.amount,2))
最后amount_format

方法三:您可以使用Oracle所采取的参数
柱量格式l9999999999.99
这种方法的不足是,在小数点左边9格式的数量,否则将有超过的########数字显示。
另一个问题是,当使用该列时,设置是会话或系统。需要注意。
表的数值列可能并不总是需要显示所有位置。它是小数点后的两位格式。此时,它只能使用会话级别,但存在数据库连接会话超时的问题。如果它不用于系统级别,则不建议使用此方法。

方法四:使用to_char +修剪方式
选择装饰(to_char(1234,99999999999999 .99 '))从双;
也许
选择LTrim(TRIM((1234.525,00000000000000 to_char .00)),'0')从双;
这里使用了14个9或14个0格式,建议使用14 9是方便的。方法四的不足之处是:
如果该值为0,然后转换is.00代替0,和救济是解码。
另一个注意格式在左的小数点9或0数足够多的负责数字显示、查询# N符号。
如下:
选择解码(工资,0,'0.00,修剪(to_char(工资,99999999999999 .99 ')))从can_do;
也许
选择解码(工资,0,'0.00、LTrim(TRIM(to_char(工资,00000000000000 .00),从can_do '0'));
结论:建议在第四路或改正的方法之一,利用修剪+ to_char的方式,它是更好地使用N 9在小数点的左边,否则不使用0的方式,更多的装饰处理。
那就是:选择解码(工资,0,'0.00,修剪(to_char(工资,99999999999999 .99 ')))从can_do;
也许
选择解码(工资,0,'0.00 ',(to_char(圆(工资,2),'fm99999999999999.00 ')))从can_do;

tag:解决方案十进制电脑软件Oracle

相关内容