数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle小数点的实际保留问题的4方案


发布日期:2023年04月11日
 
Oracle小数点的实际保留问题的4方案

以下的文章主要是讲述Oracle小数点的实际保留问题如果你有相关的业务清单有提取要求的话我们需要使用到百分率通常的情况下需要对其保留两位小数其实我们只用round就可以实现(round(_data) )但是格式不是很工整

对格式要求不严谨的情况下使用round即可以下是网络搜索到的处理方法

方法一使用to_char的fm格式

to_char(round(dataamount)FM) as amount

不足之处是如果数值是的话会显示为而不是

另一需要注意的是格式中Oracle小数点左边的个数要够多否则查询的数字会显示为n个符号#

解决方式如下

select decode(salary(to_char(round(salary)fm))) from can_do;

方法二使用case when then else end进行各种情况的判断处理

case

when instr(to_char(dataamount) ) < then

dataamount ||

when instr(to_char(dataamount) ) + = length(dataamount) then

dataamount ||

else

to_char(round(dataamount ))

end as amount_format

方法三可以使用Oracle自带的参数设置

lumn amount format l

此方法的不足是format中的Oracle小数点左面的的个数要已知否则会出现超过的数字显示为########的情况

另外一个问题是使用column时设置生效是session级还是system级需要注意

也许某张表的数值列不总是要求所有的地方显示时都是Oracle小数点后两位的格式

此时只能使用session级但是有个数据库连接会话超时的问题如果不是使用到system级不建议使用该方法

方法四使用to_char+trim的方式如下

select trim(to_char()) from dual;

或者

select ltrim(trim(to_char())) from dual;

此处使用了或者的格式建议使用的方式方便些方法四的不足之处是

如果数值是的话转化之后为而不是补救措施是decode一下

另一需要注意的是格式中Oracle小数点左边或者的个数要够多负责查询的数字会显示为n个符号#

如下

select decode

(salarytrim(to_char(salary))) from can_do;

或者

select decode

(salaryltrim(trim(to_char(salary)))) from can_do;

结论建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式而且最好使用Oracle小数点左边n个的方式不要使用的方式否则要多一步trim处理

select decode(salary

trim(to_char(salary))) from can_do;

或者

select decode(salary

(to_char(round(salary)fm))) from can_do;

以上的相关内容就是对Oracle小数点的保留问题的介绍望你能有所收获

上一篇:Oracle数据库中不同恢复的特性

下一篇:Oracle--使用Wrap工具加密你的SQL