【问题标题】:VARCHAR2 datatype in ORACLEORACLE 中的 VARCHAR2 数据类型
【发布时间】:2019-01-22 00:10:50
【问题描述】:

我对 oracle 非常陌生,今天我发现了数据类型 VARCHAR2,我想了解更多关于它的信息并在 Google 上遇到问题的数据类型。

我浏览了几篇关于数据类型的文章,发现了一些对 VARCHAR2 直接相反的描述。

描述 1:

  • 当您创建一个包含 VARCHAR2 列的表时,您指定一个最大值 列长度​​(以字节为单位,而不是字符)在 1 到 2000 之间 VARCHAR2 列(article)

描述 2:

  • 您最多可以在 VARCHAR2 列中存储 4000 个字符。 (article)

如您所见,这有点令人困惑。 VARCHAR2是指定最大列长度还是最大字符长度?谁能帮我解释一下哪一个是正确的?

【问题讨论】:

  • 您的第一个链接是 Oracle 版本 7。那是上个世纪的当前...
  • @Mat 我真的很抱歉。我不知道oracle版本。我真的很新

标签: oracle varchar2


【解决方案1】:

这取决于您的 Oracle 版本,但两篇文章大多都不正确。

当您声明该列时,您可以将声明的长度显式声明为字节或字符,也可以使用会话的默认值隐式声明。

此外,最大长度为 4000 字节,而非字符。即使您声明 VARCHAR2(4000 CHAR),该列也不能存储超过 4000 BYTES。如果它们都是单字节,它将存储 4000 个字符,否则它将存储少于 4000 个字符。

【讨论】:

  • 这是有道理的。您提到“这取决于 oracle 版本”。如果可能的话,您能否详细说明
  • @Ramesh - 我刚刚做了,在另一个答案下。
  • 我已经完成了。感谢您宝贵的时间,先生
  • 也许应该注意的是,在最新版本 (12c) 中,您可以选择将限制扩展到 32767 字节。
  • @WernfriedDomscheit - 已经注意到了,我说过 这取决于您的 Oracle 版本
【解决方案2】:

描述 2:

  • 您最多可以在 VARCHAR2 列中存储 4000 个字符。

这是正确的

VARCHAR2 数据类型存储可变长度的字符串。当您创建带有 VARCHAR2 列的表时,您指定 最大字符串长度(以字节或字符为单位)在 1 到 4000 个字节之间 VARCHAR2 列。

【讨论】:

  • 但是描述1来自oracle文档
  • @Ramesh - 好的,你上面的评论让我关注第一个链接。它适用于 Oracle 7。这可能意味着限制(30 年前或任何时候)确实是 2000 字节 - 也许您无法以字符声明长度。不确定这两件事什么时候发生了变化,但至少是从 Oracle 10.2 开始。我使用 Oracle 12.2,这甚至不是最新版本。在 Oracle 中,从一个版本到下一个版本发生了巨大的变化。
【解决方案3】:

=> varchar2 数据类型与 varchar 数据类型相同。 => 其具有可变长度的数据类型。 前任。 “name varchar2(20)”并传递 name 的值是“Ram”,所以 LENGTH(name) 是 3 而不是 20。 => 其内部数据类型仅由 oracle 服务器管理。 => 即使,您声明 varchar oracle 隐式转换为 varchar2

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多