我有一个number
字段,长度为10个字节。如果我将此长度存储到另一个数据类型为VarChar2
的字段中。如何计算VarChar2
的长度?
有些人表示我可以将其声明为VarChar2(MAX)
,因为它无关紧要 - 如果我要将单词'999'
存储到VarChar(100)和VarChar(1000)中相同的数量将分配空间。
解决这个问题的正确方法是什么?
答案 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)就足够了。