Oracle to_char格式的掩码覆盖0.1-> .1情况

时间:2018-11-08 09:37:20

标签: sql oracle

所以我有以下情况:

create table test1(c1 number, c2 varchar2(250 char));
/
insert into test1 values(0.11, 0.11);
/
select * from test1;

会给我的

C1       C2
0.11    .11

我想按原样存储一个数字,例如0.11,而不删除0。问题是,在该varchar2列中,我还可以存储诸如“ 1.123”,“ 0.123456789”,“ test123”的值。因此,基本上它可以是任意精度的数字,甚至是字符串。
我认为我唯一的机会是使用to_char的“ fmt”参数,但是我找不到能够解决任何给定数目的数字和字符串的掩码

2 个答案:

答案 0 :(得分:0)

您可以在下面尝试使用to_char()和fmt作为'90D90'

create table test1(c1 number, c2 varchar2(250 char))END;

/

insert into test1 values(0.11, to_char(0.11, '90D90'))END;

/

select * from test1;

答案 1 :(得分:0)

使用正则表达式找到解决方案:

select regexp_replace('.11115', '^(\.\d+)$', '0\1') from dual

这将搜索是否以点开头并且仅以数字继续。如果您将其传递给字符串并且精度长度无所谓,就不会崩溃