Con số của bạn không bị hạn chế. Với các số có một chữ số (dương) bạn biết độ dài nối chỉ có thể là ba, nhưng cột ảo phải đủ lớn cho bất kỳ số nào - vì vậy có vẻ như nó cho phép tối đa 40 chữ số cho mô hình định dạng ngầm định (38 chữ số có nghĩa, dấu phân cách thập phân và dấu; @ collspar's lexicalisation ).
Phải nói rằng, việc giới hạn cột số sẽ không được phản ánh trong độ dài cột ảo - làm cho cả hai cột NUMBER(1,0)
vẫn để lại đoạn nối yêu cầu 81 ký tự. Lấy chuỗi con của giá trị được tạo cũng sẽ không hoạt động
, trong trường hợp này nhận được ORA-12899: value too large for column "TEXT" (actual: 10, maximum: 40)
. Cung cấp mô hình định dạng cho mỗi to_char()
cuộc gọi, ví dụ:trong tổng số FM999
), sẽ hoạt động nhưng hạn chế các giá trị ở hai bên của dấu gạch dưới thay vì trực tiếp độ dài tổng thể.
Nếu bạn muốn hạn chế kích thước cột, bạn có thể truyền nó sang cùng một kiểu dữ liệu và kích thước, rõ ràng hơn:
text VARCHAR2(10) generated always as
(cast(to_char(id)||'_'||to_char(num) as VARCHAR2(10))) VIRTUAL