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个字符

目录
相关文章
|
16天前
|
存储 数据库
5. CHAR和VARCHAR的区别?
`CHAR`和`VARCHAR`在数据库中有所不同:`CHAR`长度固定,用空格填充,存储效率高,英文占1字节,汉字占2字节;而`VARCHAR`长度可变,节省空间,英文和汉字都占2字节。
15 0
|
1月前
|
C++
无法将参数1从“const char [6]”转换为“char *”的解决方法
无法将参数1从“const char [6]”转换为“char *”的解决方法
|
1月前
|
存储 机器学习/深度学习 关系型数据库
mysql中char和varchar的区别
mysql中char和varchar的区别
30 1
|
7月前
|
存储 SQL 数据库
char、varchar、nvarchar、text的区别
char、varchar、nvarchar、text的区别
33 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL之varchar和char的区别
MySQL之varchar和char的区别
17 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL 总结char与varchar的区别
MySQL 总结char与varchar的区别
28 0
|
9月前
|
存储
char和varchar的区别(秒懂!)
char和varchar的区别(秒懂!)
86 0
|
6月前
|
存储 自然语言处理 Java
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
Java_9_为何要将_String_的底层实现由_char[]_改成了_byte[]_?
|
8月前
|
存储 SQL Oracle
通过实战探索数据库中的char、varchar、varchar2、nvarchar2的部分区别
通过实战探索数据库中的char、varchar、varchar2、nvarchar2的部分区别
|
8月前
|
存储 Java 数据安全/隐私保护
Java 最常见的面试题:char 和 varchar 的区别是什么?
Java 最常见的面试题:char 和 varchar 的区别是什么?