2012-10-04 34 views
5

Según tengo entendido, el tipo de datos largos puede almacenar la cadena real (caracteres), mientras que el tipo de datos sin procesar de Long almacena los valores binarios de la cadena (caracteres). ¿Es correcto? ¿Puede una tabla tener solo una columna de tipo largo?¿Cuál es la diferencia entre los tipos de datos brutos largos y largos en Oracle?

+1

Los tipos de datos Oracle LONG solo están disponibles para compatibilidad con versiones anteriores. Mejor mira en los tipos de datos BLOB/CLOB. – Rene

Respuesta

10

Los tipos de datos se describen en la documentación; LONG is explained here (o la 11gR2 version):

LONG almacenar columnas cadenas de caracteres de longitud variable que contienen hasta 2 gigabytes -1, o 231-1 bytes. Las columnas LARGAS tienen muchas de las características de las columnas VARCHAR2. Puede usar columnas LONG para almacenar cadenas de texto largas .

Y LONG RAW is here:

El RAW y LONG RAW almacenar datos de tipos de datos que no ha de ser interpretado (es decir, no se convierten explícitamente al mover datos entre diferentes sistemas) por base de datos Oracle. Estos tipos de datos son destinados a datos binarios o cadenas de bytes. Por ejemplo, puede usar LONG RAW para almacenar gráficos, sonido, documentos o matrices de datos binarios , cuya interpretación depende del uso.

Así que un RAW o LONG RAW puede contener la representación binaria de caracteres, pero no estarán sujetos a la conversión del juego de caracteres, etc. así que probablemente no es tan útil para eso; una puede contener cualquier otro dato binario, cualquier cosa que no se supone que represente texto.

De la misma sección LONG:

Una tabla puede contener sólo una columna LONG.

Sin embargo, LONG está en desuso en favor de LOB (CLOB o NCLOB para el texto, BLOB para todo lo demás), por lo que no debe usarlos para un nuevo trabajo, y debe al menos estar considerando la sustitución de cualquiera que ya tener. De nuevo desde esa misma sección en LONG:

No cree tablas con columnas LARGAS. Utilice columnas LOB (CLOB, NCLOB, BLOB) en su lugar. Las columnas LONG solo son compatibles con la compatibilidad con versiones anteriores de .

Oracle también recomienda que convierta columnas LONG existentes a columnas LOB .

Esto documentation on migrating from LONG to LOB podría ser de su interés.

Cuestiones relacionadas