Это легко создать тест, чтобы увидеть, как это работает:
create table test1 (col1 char(10),
col2 varchar(10));
-- create data with varying lengths
insert into test1 (col1, col2)
select lpad('a', level, 'a') col1,
lpad('a', level, 'a') col2
from dual
connect by level <= 10;
-- see the length of the stored values for each row
select col1, col2, length(col1), length(col2)
from test1
order by col1, col2;
COL1 COL2 LENGTH(COL1) LENGTH(COL2)
---------- ---------- ------------ ------------
a a 10 1
aa aa 10 2
aaa aaa 10 3
aaaa aaaa 10 4
aaaaa aaaaa 10 5
aaaaaa aaaaaa 10 6
aaaaaaa aaaaaaa 10 7
aaaaaaaa aaaaaaaa 10 8
aaaaaaaaa aaaaaaaaa 10 9
aaaaaaaaaa aaaaaaaaaa 10 10
-- insert 11 characters into col1
insert into test1 (col1, col2)
values ('12345678901', null);
ORA-12899: value too large for column "SCHEMA"."TEST1"."COL1" (actual: 11, maximum: 10)
-- insert 11 characters into col2
insert into test1 (col1, col2)
values (null, '12345678901');
ORA-12899: value too large for column "SCHEMA"."TEST1"."COL2" (actual: 11, maximum: 10)
commit;
drop table test1;
Также обратите внимание, что емкость может быть в байтах, а не символы (т.е. вы не можете быть в состоянии соответствовать 10 смайликов) , – Thilo