Oracle中的长和长原始数据类型有什么区别?

时间:2012-10-04 07:51:54

标签: oracle oracle10g

我的理解是Long数据类型可以存储实际的字符串(chars),而Long原始数据类型存储字符串的二进制值(chars)。这样对吗?表只能有一个长型列吗?

1 个答案:

答案 0 :(得分:10)

文档中描述了数据类型; LONG is explained here(或11gR2 version):

  

LONG列存储包含最多的可变长度字符串   2千兆字节-1,或231-1字节。 LONG专栏有很多   VARCHAR2列的特征。您可以使用LONG列进行存储   长文本字符串。

LONG RAW is here

  

RAW和LONG RAW数据类型存储不是的数据   解释(即,在移动数据时未明确转换   Oracle数据库之间的不同系统之间)。这些数据类型是   用于二进制数据或字节字符串。例如,您可以使用   LONG RAW存储图形,声音,文档或二进制数组   数据,其解释取决于使用情况。

所以RAWLONG RAW可以包含字符的二进制表示,但不会受到字符集转换等的影响,因此可能并非对此有用;一个可以包含任何其他二进制数据 - 任何不应该代表文本的东西。

来自同一LONG部分:

  

一个表只能包含一个LONG列。

但是,LONG已弃用LOB CLOBNCLOB用于文字,BLOB用于其他所有内容),所以你不应该这样做将它们用于新工作,至少应考虑更换已有的。同样来自LONG的相同部分:

  

不要创建包含LONG列的表。使用LOB列(CLOB,NCLOB,   BLOB)相反。 LONG列仅支持向后   兼容性。

     

Oracle还建议您将现有的LONG列转换为LOB   列。

documentation on migrating from LONG to LOB可能会引起您的兴趣。