sql >> Databáze >  >> RDS >> Oracle

Znaková sada Oracle JDBC a limit 4000 znaků

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ů .



  1. Jak zřetězit dva řetězce během dotazu MySQL UPDATE?

  2. HikariCP:Jaké časové limity na úrovni databáze je třeba vzít v úvahu při nastavení maxLifetime pro Oracle 11g

  3. Oracle SQL:řazení řádku s odděleným řetězcem

  4. Aktualizace a odstranění souvisejících modelů (relačních tabulek) v Yii