方法一:使用to_char的fm格式,即:

to_char(round(data.amount,2),'FM9999999999999999.00') as amount

不足之处是,如果数值是0的话,会显示为.00而不是0.00。

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

解决方式如下:

select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

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

case

when instr(to_char(data.amount), '.') < 1 then

data.amount || '.00'

when instr(to_char(data.amount), '.') + 1 = length(data.amount) then

data.amount || '0'

else

to_char(round(data.amount, 2))

end as amount_format

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

column amount format l9999999999.99

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

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

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

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

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

select trim(to_char(1234,'99999999999999.99')) from dual;

或者

select ltrim(trim(to_char(1234.525,'00000000000000.00')),'0') from dual;

此处使用了14个9或者14个0的格式,建议使用14个9的方式,方便些。方法四的不足之处是

如果数值是0的话,转化之后为.00而不是0.00,补救措施是,decode一下。

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

如下:

select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;

或者

select decode(salary,0,'0.00',ltrim(trim(to_char(salary,'00000000000000.00')),'0')) from can_do;

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

即:select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;

或者

select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...相关推荐

  1. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  2. mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...

    在学生管理数据库中查询通信系和计算机系的所有教师信息 答:select * from 教师 where 系部代码 in(select 系部代码 from 系部 where 系部名称 in('通信系', ...

  3. 8-16位密码,英文大小写,数字,特殊字符_~@#$^至少包含3种,且不能4位连续重复或者串联(aaaa,1234,abcd,fedc···)

    如果是html的话可以直接使用: <html><head><meta charset="utf-8"> </head> <bo ...

  4. mysql查询学号和姓名_数据库SQL语句中 查询选修了全部课程的学生的学号和姓名...

    一.SQL语言查询选修了全部课程的学生的学号和姓名. 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数.相应的SQL语言如下: selectS#,SNAMEfr ...

  5. C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

    操作数据库,需要判断返回的字段值是否为空,大致有以下三种方法: 1 通过System.DBNull判断,网上大部分都使用这个方法. DataTable dt;         //假设字段为name, ...

  6. matlab 16位灰度值转8位,在matlab中如何将灰度值为24位的转化为8?

    我使用的是Visual c++6.0技术内幕里提供的类CDib来操作位图,最好提供可以两个独立的函数来分辨别实现着俩个功能.他们可以作为CDib类的成员函数来使用.类似下面的这个就可以,我用了下面的这 ...

  7. mysql 怎么查询慢sql语句_如何优化MySQL中查询慢的SQL语句啊?

    追问 恩恩我对sql稍微了解点 不知道怎么优化慢sql 可以指导一下嘛 谢谢啦 可以加下我qq吗 1501630150来自:求助得到的回答 mysql数据库有100万+数据,查询起来很慢了,如何优化 ...

  8. mysql查询课程最高分_在“成绩管理”数据库中,查询每门课程的最高分,要求得到的信息包括课程名称和分数。正确的命令是( )。 A.SELE_搜题易...

    统计只有2名以下(含2名)学生选修的课程情况,统计结果中的信息包括课程名称.开课院系和选修人数,并按选课人数排序.正确的命令是(  ). A.SELECT 课程名称,开课院系,COUNT(课程编号)A ...

  9. oracle未选定行大小写_关于Oracle中查询结果为未选定行

    今天在做关于Oracle查询语句的练习时,碰到这么一个题目:找出EMP表中姓名(ENAME)第三个字母是A的员工姓名.我的Scott.emp表的现有数据如下: SQL> select * fro ...

最新文章

  1. php 获取手机品牌,三到五年内,这家品牌要冲刺手机市场第一梯队
  2. python教程第四版pdf下载-笨办法学python 第四版 中文pdf高清版
  3. VMware Workstation 14 激活码
  4. Bioinfo:学习Python,做生信PartII 学习笔记
  5. 肿瘤相关甲基化预后分析数据库SurvivalMeth详细使用指南
  6. linux中断程序快捷键,linux命令行快捷键
  7. 《Java编程艺术》目录
  8. 算法二之树形选择排序
  9. FindBugs和JSR-305
  10. Only digits (0-9) can be put inside [] in the path string: formData.XXX
  11. 百度文档搜索与Google文档搜索的简单比较
  12. [html] html如何启动本地的exe应用?
  13. LeetCode 1010. 总持续时间可被 60 整除的歌曲(哈希)
  14. 使用easyUI给datagrid添加pagination
  15. 设置java环境变量生效 centos_解决CentOS java环境不生效的问题
  16. mongodb 可是化_Mongodb GUI可视化管理工具推荐
  17. python——os模块获取绝对路径
  18. 使用现成的组件生成伪随机二进制序列和白噪声
  19. 10个问题说清楚 什么是元宇宙 - 十问元宇宙:如何将抽象的概念具象化?
  20. SRM采购框架协议阶梯计价方法

热门文章

  1. Linux命令rm的常用用法
  2. fileTOFILE
  3. emq 重启_EMQ集群
  4. typecho 全站ajax,typecho全站静态化方案
  5. python字典示例简单代码_python学习笔记:字典的使用示例详解
  6. QQ空间Python爬虫(3)---终章
  7. MySQL DDL操作--------存储过程最佳实战
  8. CentOS 7以yum方式安装zabbix3.2及配置文件详解
  9. [译] PHP 的变量实现(给PHP开发者的PHP源码-第三部分)
  10. zabbix监控搭建以及客户端安装