read number long length example dbms_lob sql sql-server oracle

sql - number - ¿Cuál es el equivalente de varchar(max) en Oracle?



oracle tinyint (7)

¿Cuál es el equivalente de varchar (max) en Oracle?

CLOB?


AFAIK, no hay equivalente. Lo más cerca que puede estar en ORACLE es el CLOB, que tiene las mismas limitaciones que tenía TEXT en SQL Server en los "viejos tiempos malos".


En PL / SQL, VARCHAR2 puede tener hasta 32767 bytes. Para SQL, el límite es de 4000 bytes (que puede ser inferior a 4000 caracteres si está utilizando un conjunto de caracteres de varios bytes).


Las varchas están limitadas a 4000 caracteres en Oracle. Aparte de eso, debes usar LONG o CLOB. Prefieren CLOBs. LONGs son el equivalente más antiguo.

De esta documentación de Oracle :

LOB vs. LONG y LONG RAW

Los LOB son diferentes de los tipos de datos LONG y LONG RAW más antiguos de muchas maneras.

  • El tamaño máximo de un LOB es de 4 Gigabytes frente a 2 Gigabytes para LONG y LONG RAW.
  • Puede usar métodos de acceso aleatorio y secuencial en LOB; solo puede usar métodos de acceso secuencial en LONG y LONG RAW.
  • Los LOB (excepto los NCLOB) pueden ser atributos de un tipo de objeto que defina.
  • Las tablas pueden tener múltiples columnas LOB, pero pueden tener solo una columna LONG o LONG RAW.

La migración de los atributos RAW LONG y LONG existentes a LOB es recomendada por Oracle. Oracle planea finalizar el soporte de LONG y LONG RAW en futuras versiones. Consulte Migración de Oracle8 para obtener más información sobre la migración.


No hay equivalente en Oracle hasta 11g-r2. Si lo necesita, migre a otro DMMS que lo admita.



Según tengo entendido, un tipo de datos VARCHAR (MAX) es una forma específica de SQL Server 2005 de especificar un campo de texto que puede ser pequeño (hasta 8000 caracteres en SQL Server) o grande (hasta 2 GB en SQL Server). La base de datos maneja el cambio en el almacenamiento detrás de las escenas a medida que el contenido crece desde el rango pequeño al amplio.

No hay un equivalente en Oracle.

O bien tiene un pequeño fragmento de texto en un VARCHAR2 - que es de hasta 32767 bytes en pl / sql y hasta 4000 bytes en SQL (es decir, en una definición de tabla) - o tiene un bit potencialmente muy grande en un CLOB (que es un BLOB especializado).


Un enfoque que he usado en el pasado (MS SQL, antes de Varchar (max)):

Coloque dos columnas en la tabla, una Varchar más pequeña (255, por ejemplo) y otro Texto. Luego crea tu aplicación para que use la columna Varchar para datos pequeños, dejando el texto nulo. Si los datos son más grandes que Varchar, deje ese valor nulo y guárdelo en el Texto. De esta forma, los datos pequeños no ocupan su propia página en el servidor. La compensación aquí es que todas las aplicaciones que usan los datos tienen que aceptar este esquema y tener lógica para dar cuenta de ello. Pero funciona bien

Supongo que lo mismo es cierto en Oracle, solo sustituto Varchar2 para Varchar y CLOB para texto. No pretendo saber cuál debe ser el tamaño correcto para el varchar; depende de los datos, y también depende del resto de las columnas de la tabla.