Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle JDBC-Zeichensatz und 4000-Zeichen-Grenze

Vor Oracle 12.1 ein VARCHAR2 -Spalte ist auf das Speichern von 4000 Datenbytes im Datenbankzeichensatz beschränkt, selbst wenn sie als VARCHAR2(4000 CHAR) deklariert ist . Da jedes Zeichen in Ihrer Zeichenfolge 2 Byte Speicherplatz im UTF-8-Zeichensatz benötigt, können Sie nicht mehr als 2000 Zeichen in der Spalte speichern. Natürlich ändert sich diese Zahl, wenn einige Ihrer Charaktere tatsächlich nur 1 Byte Speicherplatz benötigen oder wenn einige von ihnen mehr als 2 Byte Speicherplatz benötigen. Wenn der Datenbankzeichensatz Windows-1252 ist, benötigt jedes Zeichen in Ihrer Zeichenfolge nur ein einziges Byte Speicherplatz, sodass Sie 4000 Zeichen in der Spalte speichern können.

Da Sie längere Zeichenfolgen haben, wäre es möglich, die Spalte als CLOB zu deklarieren statt als VARCHAR2 ? Das würde (effektiv) die Längenbegrenzung aufheben (es gibt eine Begrenzung für die Größe eines CLOB das hängt von der Oracle-Version und der Blockgröße ab, liegt aber mindestens im mehreren GB-Bereich).

Wenn Sie Oracle 12.1 oder höher verwenden, ist die Datei max_string_size Mit dem Parameter können Sie die maximale Größe von a erhöhen VARCHAR2 Spalte von 4000 Byte bis 32767 Byte .