我的理解是 Long 数据类型可以存储实际的字符串(chars),而 Long 原始数据类型存储字符串(chars)的二进制值。这样对吗?一个表可以只有一个长类型列吗?
1 回答
数据类型在文档中进行了描述;LONG
这里解释(或11gR2 版本):
LONG 列存储最多包含 2 GB -1 或 231-1 字节的可变长度字符串。LONG 列具有 VARCHAR2 列的许多特征。您可以使用 LONG 列来存储长文本字符串。
LONG RAW
在这里:
RAW 和 LONG RAW 数据类型存储不被 Oracle 数据库解释(即在不同系统之间移动数据时不显式转换)的数据。这些数据类型适用于二进制数据或字节串。例如,您可以使用 LONG RAW 来存储图形、声音、文档或二进制数据数组,其解释取决于使用情况。
所以 a RAW
orLONG RAW
可以包含字符的二进制表示,但不会受到字符集转换等的影响,所以可能不是那么有用;an 可以包含任何其他二进制数据 - 任何不应该代表文本的东西。
从同LONG
一部分:
一个表只能包含一个 LONG 列。
但是,LONG
不推荐使用LOB
(CLOB
或NCLOB
用于文本,BLOB
用于其他所有内容),因此您不应该将它们用于新工作,并且至少应该考虑替换您已经拥有的任何内容。再次来自同一部分LONG
:
不要创建具有 LONG 列的表。请改用 LOB 列(CLOB、NCLOB、BLOB)。支持 LONG 列仅是为了向后兼容。
Oracle 还建议您将现有的 LONG 列转换为 LOB 列。
这个关于从LONG
toLOB
迁移的文档可能很有趣。