Trước Oracle 12.1, VARCHAR2
cột được giới hạn để lưu trữ 4000 byte dữ liệu trong bộ ký tự cơ sở dữ liệu ngay cả khi nó được khai báo VARCHAR2(4000 CHAR)
. Vì mỗi ký tự trong chuỗi của bạn yêu cầu 2 byte bộ nhớ trong bộ ký tự UTF-8, bạn sẽ không thể lưu trữ nhiều hơn 2000 ký tự trong cột. Tất nhiên, con số đó sẽ thay đổi nếu một số ký tự của bạn thực sự chỉ yêu cầu 1 byte bộ nhớ hoặc nếu một số ký tự yêu cầu nhiều hơn 2 byte bộ nhớ. Khi bộ ký tự cơ sở dữ liệu là Windows-1252, mọi ký tự trong chuỗi của bạn chỉ yêu cầu một byte dung lượng duy nhất để bạn có thể lưu trữ 4000 ký tự trong cột.
Vì bạn có các chuỗi dài hơn, có thể khai báo cột dưới dạng CLOB
không chứ không phải là VARCHAR2
? Điều đó sẽ (một cách hiệu quả) loại bỏ giới hạn độ dài (có giới hạn về kích thước của CLOB
điều đó phụ thuộc vào phiên bản Oracle và kích thước khối nhưng ít nhất là trong phạm vi nhiều GB).
Nếu bạn đang sử dụng Oracle 12.1 trở lên, thì max_string_size
tham số cho phép bạn tăng kích thước tối đa của VARCHAR2
cột từ 4000 byte đến 32767 byte
.