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

时间:2009-01-05 22:58:12

标签: sql sql-server oracle

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

CLOB?

7 个答案:

答案 0 :(得分:32)

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

来自this Oracle documentation

  

LOBs与LONG和LONG RAW

     

LOB与旧版LONG不同   和LONG RAW数据类型在很多方面。

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

现有LONG和LONG的迁移   建议使用LOB的原始属性   由Oracle。甲骨文计划终止支持   未来的LONG和LONG RAW   版本。请参阅Oracle8 Migration for   有关迁移的更多信息。

答案 1 :(得分:10)

据我所知,VARCHAR(MAX)数据类型是SQL Server 2005特定的一种指定文本字段的方法,该字段可以很小(在SQL Server中最多8000个字符) 大(SQL Server中高达2GB)。当内容从小范围扩展到大范围时,数据库处理存储幕后的变化。

Oracle中没有相应的内容。

你在VARCHAR2中有一小段文本 - 在pl / sql中最多为32767字节,在SQL中最多为4000字节(即在表定义中) - 或者你可能有很多文本在CLOB(这是一个专门的BLOB)。

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我过去使用过的方法(MS SQL,在Varchar(max)之前):

在表中放置两列,一个是小的Varchar(例如255),另一个是Text。然后构建您的应用程序,以便它将Varchar列用于小数据,将Text保留为null。如果数据大于Varchar,请保留该null并将其存储在Text中。这样,小数据就不占用服务器上自己的页面。这里的权衡是所有使用数据的应用程序必须同意这个方案,并有逻辑来解释它。但它运作良好。

我认为在Oracle中也是如此,对于Varchar来说只是替换Varchar2,对于Text来说是CLOB。我不假装知道varchar的大小应该是什么 - 这取决于数据,还取决于表中的其余列。

答案 5 :(得分:0)

Oracle 11g网关将Varchar(Max)转换为LONG 不是很方便,并且导致我们将SQL Server数据加载到Oracle中的主要问题。

有关详细信息,请参阅以下网址: - http://docs.oracle.com/cd/B28359_01/gateways.111/b31049/apa.htm

答案 6 :(得分:-1)

Oracle中的没有等效值高达11g-r2。 如果需要,请迁移到另一个支持它的DMMS。