【问题标题】:number to varchar2 storage querynumber 到 varchar2 存储查询
【发布时间】:2015-09-28 21:18:58
【问题描述】:

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

有些状态我可以将其声明为 VarChar2(MAX),因为这并不重要 - 说如果我要将单词 '999' 存储到 VarChar(100) 和 VarChar(1000) 中,相同的空间量将是分配。

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

【问题讨论】:

  • 一个长度为10字节,还是10位的数字字段?确切的数据类型是什么?
  • 所以如果你有1000作为number,你需要将它的长度,即4存储在varchar2中?
  • 这就是我要问的。如果我有一个号码,例如1000. 如果是varchar2,长度是多少?另外,如果它是双倍的,例如1000.1 我需要一个长度为 6 的 varchar2?
  • 使用LENGTH(yournumberColumn)
  • 如果您将 1000 保存为 varchar2,那么它的长度将为 4。

标签: sql oracle


【解决方案1】:

无论您将特定字符串保存在 VarChar2(100) 还是 VarChar2(1000) 中,在所使用的存储方面都没有区别 - 长度只是对可以使用的字节数(或字符数)的限制存储起来。

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

select vsize(1000) from dual;

...并与...进行比较

select vsize('1000') from dual;

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

【讨论】:

    【解决方案2】:

    如果您的数据类型是NUMBER(10),那么它可以存储最大9999999999 和最小-9999999999

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2012-08-25
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多