sql >> Database teknologi >  >> RDS >> Oracle

Oracle JDBC-tegnsæt og grænse på 4000 tegn

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 .



  1. Er brugen af ​​RETURNING INTO-sætningen hurtigere end en separat SELECT-sætning?

  2. Hurtigere måde at indlæse stor datavarehustabel på

  3. Sådan sorteres resultatet fra string_agg()

  4. PHP / MySQL Conceptual Database 'Sync' spørgsmål