Преди Oracle 12.1, VARCHAR2
колоната е ограничена до съхраняване на 4000 байта данни в набора от символи на базата данни, дори ако е декларирана VARCHAR2(4000 CHAR)
. Тъй като всеки знак във вашия низ изисква 2 байта място за съхранение в набора от символи UTF-8, няма да можете да съхранявате повече от 2000 знака в колоната. Разбира се, това число ще се промени, ако някои от вашите знаци действително изискват само 1 байт памет или ако някои от тях изискват повече от 2 байта памет. Когато наборът от символи на базата данни е Windows-1252, всеки знак във вашия низ изисква само един байт място за съхранение, така че ще можете да съхранявате 4000 знака в колоната.
Тъй като имате по-дълги низове, възможно ли е да декларирате колоната като CLOB
вместо като VARCHAR2
? Това (ефективно) ще премахне ограничението за дължина (има ограничение за размера на CLOB
това зависи от версията на Oracle и размера на блока, но е поне в диапазона от няколко GB).
Ако случайно използвате Oracle 12.1 или по-нова версия, max_string_size
параметър ви позволява да увеличите максималния размер на VARCHAR2
колона от 4000 байта до 32767 байта
.