所以我有以下情况:
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”参数,但是我找不到能够解决任何给定数目的数字和字符串的掩码
答案 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
这将搜索是否以点开头并且仅以数字继续。如果您将其传递给字符串并且精度长度无所谓,就不会崩溃