Oracle中varchar(max)的等价物是什么?
CLOB?
答案 0 :(得分:32)
Oracle中的varchars限制为4000个字符。除此之外,您必须使用LONG或CLOB。喜欢CLOB。 LONG是较旧的等价物。
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。