2012-10-04 67 views
5

我的理解是Long數據類型可以存儲實際的字符串(chars),而Long原始數據類型存儲字符串(chars)的二進制值。這樣對嗎?一張桌子只能有一個長型的列嗎?Oracle中長和長的原始數據類型有什麼區別?

+1

Oracle LONG數據類型僅可用於向後兼容。更好地研究BLOB/CLOB數據類型。 – Rene

回答

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可能是感興趣的。

相關問題