varchar2的参数(byte和char)区别

简介: 由于一个汉字在我的GBK系统里占用2个字节,所以byte的只能插入2个汉字,而char的可以插入5个汉字。

由于一个汉字在我的GBK系统里占用2个字节,所以byte的只能插入2个汉字,而char的可以插入5个汉字。
所以byte 就是字节数,对于汉字,GBK占用2个字节,如果是UTF-8则占用3个字节。
为了充分利用4000个的上限,给自己减少麻烦,建议存储含有中文文字的字段时,采用char类型。

下面是测试

SQL> create table test(name varchar(5 byte),namec varchar(5 char));
表已创建。

-----------------------byte测试------------------------------------

SQL> insert into test(name) values('12345');
已创建 1 行。

SQL> insert into test(name) values('123456');
insert into test(name) values('123456')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAME" 的值太大 (实际值: 6, 最大值: 5)

SQL> insert into test(name) values('天津');
已创建 1 行。

SQL> insert into test(name) values('天津市');
insert into test(name) values('天津市')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAME" 的值太大 (实际值: 6, 最大值: 5)

-----------------------char测试------------------------------------

SQL> insert into test(namec) values('12345');
已创建 1 行。

SQL> insert into test(namec) values('123456');
insert into test(namec) values('123456')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAMEC" 的值太大 (实际值: 6, 最大值: 5)

SQL> insert into test(namec) values('天津');
已创建 1 行。

SQL> insert into test(namec) values('天津市');
已创建 1 行。

SQL> insert into test(namec) values('天津市北京');
已创建 1 行。

SQL> insert into test(namec) values('天津市北京市');
insert into test(namec) values('天津市北京市')
第 1 行出现错误:
ORA-12899: 列 "SCOTT"."TEST"."NAMEC" 的值太大 (实际值: 6, 最大值: 5)

-------------------------结果------------------------------------
SQL> select * from test;
NAME NAMEC
----- ----------
12345
天津
12345
天津
天津市
天津市北京

已选择6行。


1、对于英文字符:
  varchar2(6)可以最多存放6个字符
2、对于中文字符:
  数据库字符集为UTF-8,varchar2(6) 最多存放2个字符
  数据库字符集为ZHS16GBK,varchar2(6) 最多存放3个字符
3、不管是中文字符,还是英文字符,nvarchar2(6)都可以存放6个字符

目录
相关文章
|
4月前
|
存储 数据管理 数据库
|
4月前
|
存储 SQL 数据库
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
7月前
|
存储
char *str,char &str,char *& str和char str的区别
char *str,char &str,char *& str和char str的区别
158 0
|
存储 SQL 数据库
char、varchar、nvarchar、text的区别
char、varchar、nvarchar、text的区别
110 0
|
7月前
|
存储 机器学习/深度学习 关系型数据库
mysql中char和varchar的区别
mysql中char和varchar的区别
200 1
|
7月前
|
存储 数据库
5. CHAR和VARCHAR的区别?
`CHAR`和`VARCHAR`在数据库中有所不同:`CHAR`长度固定,用空格填充,存储效率高,英文占1字节,汉字占2字节;而`VARCHAR`长度可变,节省空间,英文和汉字都占2字节。
90 0
|
7月前
|
存储 SQL NoSQL
面试题:char和varchar的区别?
字节面试题:char和varchar的区别?
144 0
|
7月前
|
C++
无法将参数1从“const char [6]”转换为“char *”的解决方法
无法将参数1从“const char [6]”转换为“char *”的解决方法
|
7月前
|
存储 关系型数据库 MySQL
MySQL之varchar和char的区别
MySQL之varchar和char的区别
76 0