oracle表单12.如何显示十进制数字的前导零



我希望将(来自查询的(十进制数字显示为文本项。如果我设置

:TXT_ITEM := '0,000123456789'

它是有效的。但是,如果:TXT_ITEM绑定到数值表字段,则值显示为,000123456789

我试图在几个触发器上强制使用格式编号(后更改、当新记录实例时、后文本…(,但没有成功。另一方面,设置format_mask会强制我的DB值为给定数量的十进制数字。

如何显示前导零?

看看这两个选项中的任何一个是否有帮助。

样本数据:

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, '^(-?)([.,])', '102') 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, '^(-?)([.,])', '102')
into :block.text_item
from your_table
where some_condition;

表中的相关数字数据似乎属于类型

NUMBER(13,12) 

在这种情况下,将Property PaletteData部分中的TXT_ITEMFormat Mask属性设置为就足够了

0D000000000000

具有CCD_ 8的精度和CCD_。

考虑到刻度部分是固定的,您可以根据列的精度值在D字符之前添加更多的零,例如NUMBER(14,12)保留D之前的两个零,NUMBER(15,12)保留三个零。

最新更新