5

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

4

1 回答 1

11

数据类型在文档中进行了描述;LONG这里解释(或11gR2 版本):

LONG 列存储最多包含 2 GB -1 或 231-1 字节的可变长度字符串。LONG 列具有 VARCHAR2 列的许多特征。您可以使用 LONG 列来存储长文本字符串。

LONG RAW这里:

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

所以 a RAWorLONG RAW可以包含字符的二进制表示,但不会受到字符集转换等的影响,所以可能不是那么有用;an 可以包含任何其他二进制数据 - 任何不应该代表文本的东西。

从同LONG一部分:

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

但是,LONG不推荐使用LOBCLOBNCLOB用于文本,BLOB用于其他所有内容),因此您不应该将它们用于新工作,并且至少应该考虑替换您已经拥有的任何内容。再次来自同一部分LONG

不要创建具有 LONG 列的表。请改用 LOB 列(CLOB、NCLOB、BLOB)。支持 LONG 列仅是为了向后兼容。

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

这个关于从LONGtoLOB迁移的文档可能很有趣。

于 2012-10-04T08:33:47.633 回答