drop table VARCHAR_Test cascade constraints;
/*==============================================================*/
/* Table: "VARCHAR" */
/*==============================================================*/
create table VARCHAR_Test (
VARCHAR_NULL VARCHAR(4),
VARCHAR_BYTE VARCHAR2(4 BYTE),
VARCHAR_CHAR VARCHAR2(4 CHAR)
);
select * from VARCHAR_TEST
insert into VARCHAR_TEST (varchar_null) values('aaaa')/*OK*/
insert into VARCHAR_TEST(varchar_null) values('aaaaa')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_NULL" 的值太大 (實際值: 5, 最大值: 4)*/
insert into VARCHAR_TEST(varchar_null) values('中文')/*OK*/
insert into VARCHAR_TEST(varchar_null) values('中文數據')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_NULL" 的值太大 (實際值: 8, 最大值: 4)*/
/*=================================*/
insert into VARCHAR_TEST (VARCHAR_BYTE) values('aaaa')/*OK*/
insert into VARCHAR_TEST(VARCHAR_BYTE) values('aaaaa')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
BYTE
" 的值太大 (實際值: 5, 最大值: 4)*/
insert into VARCHAR_TEST(VARCHAR_BYTE) values('中文')/*OK*/
insert into VARCHAR_TEST(VARCHAR_BYTE) values('中文數據')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
BYTE
" 的值太大 (實際值: 8, 最大值: 4)*/
/*=================================*/
insert into VARCHAR_TEST (VARCHAR_CHAR) values('aaaa')/*OK*/
insert into VARCHAR_TEST(VARCHAR_CHAR) values('aaaaa')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
CHAR
" 的值太大 (實際值: 5, 最大值: 4)*/
insert into VARCHAR_TEST(VARCHAR_CHAR) values('中文')/*OK*/
insert into VARCHAR_TEST(VARCHAR_CHAR) values('中文數據')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
CHAR
" 的值太大 (實際值: 8, 最大值: 4)*/
insert into VARCHAR_TEST(VARCHAR_CHAR) values('中文數據D')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
CHAR
" 的值太大 (實際值: 5, 最大值: 4)*/
insert into VARCHAR_TEST(VARCHAR_CHAR) values('中文數據的')/*ORA-12899: 列 "SIMPLE"."VARCHAR_TEST"."VARCHAR_
CHAR
" 的值太大 (實際值: 5, 最大值: 4)*/
/*=================================*/
/************總結: *****************/
在oracle 中 varchar 跟varchar2(n%byte)一致
在oracle 中 varchar2(n%char) 中文跟英文同樣算一個佔位
其餘,你都懂。