Oracle
 sql >> Database >  >> RDS >> Oracle

Set di caratteri Oracle JDBC e limite di 4000 caratteri

Prima di Oracle 12.1, un VARCHAR2 la colonna è limitata alla memorizzazione di 4000 byte di dati nel set di caratteri del database anche se è dichiarato VARCHAR2(4000 CHAR) . Poiché ogni carattere nella stringa richiede 2 byte di memoria nel set di caratteri UTF-8, non sarà possibile memorizzare più di 2000 caratteri nella colonna. Ovviamente, quel numero cambierà se alcuni dei tuoi personaggi richiedono effettivamente solo 1 byte di memoria o se alcuni di essi richiedono più di 2 byte di memoria. Quando il set di caratteri del database è Windows-1252, ogni carattere nella stringa richiede solo un byte di archiviazione, quindi potrai memorizzare 4000 caratteri nella colonna.

Dato che hai stringhe più lunghe, sarebbe possibile dichiarare la colonna come CLOB piuttosto che come VARCHAR2 ? Ciò rimuoverebbe (di fatto) il limite di lunghezza (c'è un limite alla dimensione di un CLOB dipende dalla versione di Oracle e dalla dimensione del blocco, ma è almeno nell'intervallo di più GB).

Se utilizzi Oracle 12.1 o versioni successive, max_string_size parametro consente di aumentare la dimensione massima di un VARCHAR2 colonna da 4000 byte a 32767 byte .