Oracle中的varchar(max)等价于什么?

Oracle中的varchar(max)等价于什么?

CLOB?

Oracle中的Varchars限制为4000个字符。 除此之外,您必须使用LONG或CLOB。 优先使用CLOB。 LONGs是较旧的等价物。

从这个Oracle文档 :

LOB与LONG和LONG RAW

LOB在许多方面与旧的LONG和LONG RAW数据types不同。

  • 对于LONG和LONG RAW,LOB的最大大小是4千兆字节,而2千兆字节是2千兆字节。
  • 您可以在LOB上使用随机和顺序访问方法; 您只能在LONG和LONG RAW上使用顺序访问方法。
  • LOB(NCLOB除外)可以是您定义的对象types的属性。
  • 表可以有多个LOB列,但只能有一个LONG或LONG RAW列。

Oraclebuild议将现有的LONG和LONG Raw属性迁移到LOB。 Oracle计划在未来的版本中终止对LONG和LONG RAW的支持。 有关迁移的更多信息,请参阅Oracle8迁移。

据我所知,VARCHAR(MAX)数据types是SQL Server 2005指定文本字段的一种特殊方式,可以是小的(SQL Server中最多8000个字符) 大(SQL Server中最多2GB)的文本字段。 随着内容从小范围扩展到大范围,数据库处理后台存储的变化。

在Oracle中没有相应的东西。

您可以在VARCHAR2中使用less量的文本 – 在pl / sql中最多为32767个字节,在SQL中最多为4000个字节(即在表定义中) – 或者在CLOB中可能有很大一部分文本(这是一个专门的BLOB)。

在PL / SQL中,VARCHAR2可以达到32767字节。 对于SQL,限制为4000字节(如果使用多字节字符集,则可能less于4000个字符)。

AFAIK,没有相同的。 在ORACLE中最接近的就是CLOB,它与TEXT在“糟糕的旧时代”中有相同的限制。

我曾经使用的一种方法(MS SQL,在Varchar(max)之前):

在表中放置两列,一个小型的Varchar(例如255)和另一个文本。 然后构build您的应用程序,以便将小数据使用Varchar列,并将Text保留为空。 如果数据大于Varchar,则保留null并将其存储在Text中。 这样,小数据不占用服务器上的自己的页面。 这里的折衷是所有使用数据的应用程序都必须同意这个scheme,并且有逻辑来解释它。 但它运作良好。

我认为在Oracle中也是如此,只是Varchar2代表Varchar,CLOB代表Text。 我不会假装知道varchar的大小应该是多less – 这是数据相关的,也取决于表中其余的列。

Oracle 11g网关将Varchar(Max)转换为LONG不太方便,并且导致我们将SQL Server数据加载到Oracle中时遇到重大问题。

有关更多详细信息,请参阅以下url: – http://docs.oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm

在Oracle中, 没有相当于11g-r2的东西。 如果你需要的话,迁移到另一个支持它的DMMS。