我希望将(来自查询的(十进制数字显示为文本项。如果我设置
: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 Palette
的Data
部分中的TXT_ITEM
的Format Mask
属性设置为就足够了
0D000000000000
具有CCD_ 8的精度和CCD_。
考虑到刻度部分是固定的,您可以根据列的精度值在D
字符之前添加更多的零,例如NUMBER(14,12)
保留D
之前的两个零,NUMBER(15,12)
保留三个零。