sql >> Base de Datos >  >> RDS >> Oracle

Juego de caracteres Oracle JDBC y límite de 4000 caracteres

Antes de Oracle 12.1, un VARCHAR2 la columna está limitada a almacenar 4000 bytes de datos en el conjunto de caracteres de la base de datos, incluso si se declara VARCHAR2(4000 CHAR) . Dado que cada carácter de su cadena requiere 2 bytes de almacenamiento en el juego de caracteres UTF-8, no podrá almacenar más de 2000 caracteres en la columna. Por supuesto, ese número cambiará si algunos de sus personajes realmente requieren solo 1 byte de almacenamiento o si algunos de ellos requieren más de 2 bytes de almacenamiento. Cuando el conjunto de caracteres de la base de datos es Windows-1252, cada carácter de su cadena requiere solo un byte de almacenamiento, por lo que podrá almacenar 4000 caracteres en la columna.

Dado que tiene cadenas más largas, ¿sería posible declarar la columna como CLOB? en lugar de como un VARCHAR2 ? Eso eliminaría (efectivamente) la limitación de longitud (hay un límite en el tamaño de un CLOB eso depende de la versión de Oracle y el tamaño del bloque, pero al menos está en el rango de varios GB).

Si está utilizando Oracle 12.1 o posterior, el max_string_size El parámetro le permite aumentar el tamaño máximo de un VARCHAR2 columna de 4000 bytes a 32767 bytes .