栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

值在oracle中不以前导零显示

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

值在oracle中不以前导零显示

您可以使用遮罩来关闭,如

'FM999999990D9999'
,在小数点的每边各加9s,以覆盖您可能拥有的所有值。

with tab1 (cola) as (         select 0.87 from dual  union  select 661 from dual  union  select 661.87 res from dual  union  select 1.5 res from dual)select cola, to_char(cola, 'FM999999990D9999')from tab1;      COLA TO_CHAr(COLA,'F---------- ---------------       .87 0.87       1.5 1.5        661 661.    661.87 661.87

FM
移除了尾随零以及开头的空格(包括一个+/-号的标称空间)。

为了摆脱尾随的十进制标记,您还需要将其修剪掉:

with tab1 (cola) as (         select 0.87 from dual  union  select 661 from dual  union  select 661.87 res from dual  union  select 1.5 res from dual)select cola, rtrim(to_char(cola, 'FM999999990D9999'), to_char(0, 'FMD'))from tab1;

D
在这两个方面都坚持了下来;您可以
.
在两者中都使用固定值,因此不需要第二个
to_char()
调用来转换它,但是您可能希望它由会话控制-
无论哪种方式都需要保持一致。


如果您不知道需要包含多少个9,则可以根据小数点分隔符前后的位数生成每个数字的定制格式掩码:

with tab1 (cola) as ( select 0.87 from dual  union all select 661 from dual  union all select 661.87 res from dual  union all select 1.5 res from dual  union all select 0.00045354543 from dual)select cola,  'FM' || lpad('0', length(trunc(cola)), '9')       || case when trunc(cola) != cola    then 'D' || rpad('9', length(cola - trunc(cola)) - 1, '9')          end as format_mask,  to_char(cola,    'FM' || lpad('0', length(trunc(cola)), '9')         || case when trunc(cola) != cola      then 'D' || rpad('9', length(cola - trunc(cola)) - 1, '9') end) as resultfrom tab1;COLA FORMAT_MASK          RESULT   --------------- -------------------- -------------------- .87 FM0D99    0.87      661 FM990     661    661.87 FM990D99  661.87    1.5 FM0D9     1.5         .00045354543 FM0D99999999999      0.00045354543

这依赖于隐式转换,但似乎适用于正数,负数和零。不需要修剪结果,因为对于非整数,只包含小数点分隔符D。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号