Oracle
 sql >> Base de données >  >> RDS >> Oracle

Jeu de caractères Oracle JDBC et limite de 4000 caractères

Avant Oracle 12.1, un VARCHAR2 la colonne est limitée à stocker 4000 octets de données dans le jeu de caractères de la base de données même si elle est déclarée VARCHAR2(4000 CHAR) . Étant donné que chaque caractère de votre chaîne nécessite 2 octets de stockage dans le jeu de caractères UTF-8, vous ne pourrez pas stocker plus de 2 000 caractères dans la colonne. Bien sûr, ce nombre changera si certains de vos personnages ne nécessitent en réalité qu'un octet de stockage ou si certains d'entre eux nécessitent plus de 2 octets de stockage. Lorsque le jeu de caractères de la base de données est Windows-1252, chaque caractère de votre chaîne ne nécessite qu'un seul octet de stockage, vous pourrez donc stocker 4 000 caractères dans la colonne.

Puisque vous avez des chaînes plus longues, serait-il possible de déclarer la colonne en tant que CLOB plutôt que comme un VARCHAR2 ? Cela supprimerait (effectivement) la limitation de longueur (il y a une limite à la taille d'un CLOB cela dépend de la version d'Oracle et de la taille du bloc, mais c'est au moins dans la plage de plusieurs Go).

Si vous utilisez Oracle 12.1 ou une version ultérieure, le max_string_size permet d'augmenter la taille maximale d'un VARCHAR2 colonne de 4 000 octets à 32 767 octets .