number到varchar2存储查询

时间:2015-09-28 13:05:39

标签: sql oracle

我有一个number字段,长度为10个字节。如果我将此长度存储到另一个数据类型为VarChar2的字段中。如何计算VarChar2的长度?

有些人表示我可以将其声明为VarChar2(MAX),因为它无关紧要 - 如果我要将单词'999'存储到VarChar(100)和VarChar(1000)中相同的数量将分配空间。

解决这个问题的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

无论是在VarChar2(100)还是VarChar2(1000)中保存特定字符串,使用的存储都没有区别 - 长度只是作为对可以使用的字节数(或字符数)的约束存储。

但是,Oracle NUMBER数据类型不使用4个字节来保存1000。您可以使用以下方法检查存储空间:

select vsize(1000) from dual;

...并与...比较

select vsize('1000') from dual;

数字的存储要求更多地取决于存储的有效数字的数量,因此1000或1000000需要的字节数少于1234或1234567.

答案 1 :(得分:0)

如果您的数据类型为NUMBER(10),那么它可以存储最多9999999999和分钟-9999999999

如果要将此数据存储到varchar列,那么varchar(11)就足够了。