sql >> Databasteknik >  >> RDS >> Oracle

Oracle JDBC-teckenuppsättning och gräns för 4000 tecken

Före Oracle 12.1, en VARCHAR2 kolumnen är begränsad till att lagra 4000 byte data i databasens teckenuppsättning även om den deklareras VARCHAR2(4000 CHAR) . Eftersom varje tecken i din sträng kräver 2 byte lagring i teckenuppsättningen UTF-8, kommer du inte att kunna lagra mer än 2000 tecken i kolumnen. Naturligtvis kommer den siffran att ändras om några av dina karaktärer faktiskt bara kräver 1 byte lagringsutrymme eller om några av dem kräver mer än 2 byte lagring. När databasteckenuppsättningen är Windows-1252 kräver varje tecken i din sträng bara en enda byte lagring så att du kan lagra 4000 tecken i kolumnen.

Eftersom du har längre strängar, skulle det vara möjligt att deklarera kolumnen som en CLOB snarare än som en VARCHAR2 ? Det skulle (effektivt) ta bort längdbegränsningen (det finns en gräns för storleken på en CLOB det beror på Oracle-versionen och blockstorleken, men det är åtminstone i intervallet flera GB).

Om du råkar använda Oracle 12.1 eller senare kan max_string_size parametern låter dig öka den maximala storleken på en VARCHAR2 kolumn från 4000 byte till 32767 byte .



  1. Datum i en URL dd/mm/åååå

  2. php-filuppladdning, hur man begränsar filuppladdningstypen

  3. Hur man pg_restore

  4. Hur säker är autentisering i mysql-protokollet?