Przed Oracle 12.1, VARCHAR2
kolumna jest ograniczona do przechowywania 4000 bajtów danych w zestawie znaków bazy danych, nawet jeśli jest zadeklarowana VARCHAR2(4000 CHAR)
. Ponieważ każdy znak w ciągu wymaga 2 bajtów pamięci w zestawie znaków UTF-8, nie będzie można przechowywać więcej niż 2000 znaków w kolumnie. Oczywiście ta liczba zmieni się, jeśli niektóre z twoich postaci faktycznie będą wymagały tylko 1 bajtu pamięci lub jeśli niektóre z nich wymagają więcej niż 2 bajty pamięci. Gdy zestaw znaków bazy danych to Windows-1252, każdy znak w ciągu wymaga tylko jednego bajtu pamięci, więc będziesz mógł przechowywać 4000 znaków w kolumnie.
Ponieważ masz dłuższe ciągi, czy byłoby możliwe zadeklarowanie kolumny jako CLOB
? zamiast jako VARCHAR2
? To (efektywnie) usunęłoby ograniczenie długości (istnieje ograniczenie rozmiaru CLOB
to zależy od wersji Oracle i rozmiaru bloku, ale przynajmniej mieści się w zakresie wielu GB).
Jeśli używasz Oracle 12.1 lub nowszego, max_string_size
parametr umożliwia zwiększenie maksymalnego rozmiaru VARCHAR2
kolumna od 4000 bajtów do 32767 bajtów
.