oracle forms 12. 如何显示十进制数的前导零
Posted
技术标签:
【中文标题】oracle forms 12. 如何显示十进制数的前导零【英文标题】:oracle forms 12. how to display leading zero of decimal numbers 【发布时间】:2020-04-07 08:42:25 【问题描述】:我希望将十进制数字(来自查询)显示到文本项中。 如果我设置
:TXT_ITEM := '0,000123456789'
它有效。但是,如果:TXT_ITEM
绑定到数值表字段,则值显示为,000123456789
。
我试图在几个触发器(post-change、when-new-record-instance、post-text...)上强制使用格式编号,但未成功。另一方面,设置 format_mask 会强制我的 DB 值为给定的小数位数。
如何让前导零显示?
【问题讨论】:
当您说“设置格式掩码”时,您是指在字段属性中设置它,还是按照您的帖子前面所述通过代码设置它? 【参考方案1】:看看这两个选项是否有帮助。
样本数据:
SQL> create table test as
2 (select 12.34 col from dual union all
3 select 0.1234003 from dual union all
4 select -13.43432203 from dual union all
5 select 0.00012345221 from dual union all
6 select -0.002412428238234821 from dual
7 );
Table created.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
COL NUMBER
SQL> select col,
2 regexp_replace(col, '^(-?)([.,])', '\10\2') result1,
3 rtrim(to_char(col, 'fm90D999999999999999999999'), '.') result2
4 from test;
COL RESULT1 RESULT2
---------- ------------------------- -------------------------
12,34 12,34 12,34
,1234003 0,1234003 0,1234003
-13,434322 -13,43432203 -13,43432203
,000123452 0,00012345221 0,00012345221
-,00241243 -0,002412428238234821 -0,002412428238234821
SQL>
如何在表单中使用它/它们?正是这样 - 你会例如
select regexp_replace(col, '^(-?)([.,])', '\10\2')
into :block.text_item
from your_table
where some_condition;
【讨论】:
【参考方案2】:好像表中相关的数值数据属于类型
NUMBER(13,12)
在这种情况下,将 Property Palette
的 Data
部分中的 TXT_ITEM
s Format Mask
属性设置为
0D000000000000
具有13
的精度和12
值的比例。
考虑到比例部分是固定的,您可以根据列的精度值在D
字符之前添加更多零,例如为NUMBER(14,12)
保留D
之前的两个零或为NUMBER(15,12)
保留三个零。
【讨论】:
以上是关于oracle forms 12. 如何显示十进制数的前导零的主要内容,如果未能解决你的问题,请参考以下文章