Před verzí Oracle 12.1, VARCHAR2
sloupec je omezen na uložení 4000 bajtů dat ve znakové sadě databáze, i když je deklarován VARCHAR2(4000 CHAR)
. Protože každý znak ve vašem řetězci vyžaduje 2 bajty úložiště ve znakové sadě UTF-8, nebudete moci do sloupce uložit více než 2000 znaků. Toto číslo se samozřejmě změní, pokud některé z vašich postav ve skutečnosti vyžadují pouze 1 bajt úložiště nebo pokud některé z nich vyžadují více než 2 bajty úložiště. Když je znaková sada databáze Windows-1252, každý znak ve vašem řetězci vyžaduje pouze jeden bajt úložiště, takže do sloupce budete moci uložit 4000 znaků.
Protože máte delší řetězce, bylo by možné deklarovat sloupec jako CLOB
spíše než jako VARCHAR2
? To by (efektivně) odstranilo omezení délky (existuje omezení velikosti CLOB
to závisí na verzi Oracle a velikosti bloku, ale je to alespoň v rozsahu několika GB).
Pokud náhodou používáte Oracle 12.1 nebo novější, max_string_size
parametr umožňuje zvýšit maximální velikost VARCHAR2
sloupec od 4000 bajtů do 32767 bajtů
.