Før Oracle 12.1, en VARCHAR2
kolonne er begrænset til lagring af 4000 bytes data i databasens tegnsæt, selvom den er erklæret VARCHAR2(4000 CHAR)
. Da hvert tegn i din streng kræver 2 bytes lagerplads i UTF-8-tegnsættet, vil du ikke være i stand til at gemme mere end 2000 tegn i kolonnen. Selvfølgelig vil dette tal ændre sig, hvis nogle af dine karakterer faktisk kun kræver 1 byte lagerplads, eller hvis nogle af dem kræver mere end 2 byte lagerplads. Når databasens tegnsæt er Windows-1252, kræver hvert tegn i din streng kun en enkelt byte lagerplads, så du vil være i stand til at gemme 4000 tegn i kolonnen.
Da du har længere strenge, ville det være muligt at erklære kolonnen som en CLOB
snarere end som en VARCHAR2
? Det ville (effektivt) fjerne længdebegrænsningen (der er en grænse for størrelsen af en CLOB
det afhænger af Oracle-versionen og blokstørrelsen, men det er i det mindste i området med flere GB).
Hvis du tilfældigvis bruger Oracle 12.1 eller nyere, er max_string_size
parameter giver dig mulighed for at øge den maksimale størrelse af en VARCHAR2
kolonne fra 4000 bytes til 32767 bytes
.