ORACLE中的TO_CHAR 格式化数值时的疑惑

yaozqwise 2009-06-03 10:34:22
我要实现如下功能:
将数值通过“,”分格符格式化。
例如
1234格式化为:1,234,
1234.5格式化为:1,234.5

该数值有可能是整数有可能是小数。

如果用to_char(num,999,999)这种方法的话,无法将1234.5格式化成1,234.5.
如果用to_char(num,999,999.99)格式式,将1234格式化后会变成123,4.00。
而我现在要实现的功能是,如果是整数格式时化不要出现小数部分,只有带小数的格式化时才需要小数部分

请各位大虾帮忙解决一下。
...全文
288 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzcnc 2009-06-03
  • 打赏
  • 举报
回复
学习中
zcs_1 2009-06-03
  • 打赏
  • 举报
回复

to_char(num,'fm999,999.99')
阿三 2009-06-03
  • 打赏
  • 举报
回复
to_char(num,'fm999,999.99')
超叔csdn 2009-06-03
  • 打赏
  • 举报
回复
SQL> select trim(rtrim(rtrim(to_char(1234.5,'999,990.0000'),'0'),'.')) from dual;

TRIM(RTRIM(RT
-------------
1,234.5

SQL> select trim(rtrim(rtrim(to_char(1234,'999,990.0000'),'0'),'.')) from dual;

TRIM(RTRIM(RT
-------------
1,234
yaozqwise 2009-06-03
  • 打赏
  • 举报
回复
谢谢1楼的回复。用 rtrim去掉后面的“.”就可以了,不过里面格式化时,rtrim 0 的方法可以用fm来代替。
2,3楼的这种做法我是知道的。只不过当NUM为整数而不是小数时,Format后,数值后面会有一个小数点。而我想要的结果显然不是这样的。
不过也谢谢你们的关注。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧