目录
一个字符占多少字节由什么决定。
字段长度和字节是什么关系
1. Mysql
1.1 数据类型:char、varchar
1.2 编码集与字节关系
1.3 查询字节或字符数函数
1.4 示例 eg: select length(‘A打豆豆’), lengthb(‘A打豆豆’) from dual;
2. Oracle
2.1 数据类型:char、varchar、nvarchar、varchar2, nvarchar2
2.2 编码集与字节关系
2.3 查询字节或字符数函数
2.4 示例
2.5 一些数据类型的区别
一个字符占多少字节由什么决定。
一个字符占多少字节取决于数据库字符集编码和字段类型。
字段长度和字节是什么关系
mysql、oracle 字段的长度一般是指字节,也有例外(如:oracle的nvarchar,varchar(size char))。
1. Mysql
1.1 数据类型:char、varchar
1.2 编码集与字节关系
- GBK : 一个汉字 = 2个字节,英文是一个字节;
- UTF-8:一个汉字 = 3个字节,英文是一个字节;
1.3 查询字节或字符数函数
- 字节:length() ;
- 字符:char_length() ;
1.4 示例 eg: select length(‘A打豆豆’), lengthb(‘A打豆豆’) from dual;
字节 length(‘A打豆豆’) | 字符 char_length(‘A打豆豆’) | 字符集编码 |
7 | 4 | gbk |
10 | 4 | utf8 |
2. Oracle
2.1 数据类型:char、varchar、nvarchar、varchar2, nvarchar2
2.2 编码集与字节关系
字符集编码查看:select userenv(‘language’) from dual。
- SIMPLIFIED CHINESE_CHINA.ZHS16GBK :一个汉字占用两个字节
- SIMPLIFIED CHINESE_CHINA.AL32UTF8:一个汉字占用三个字节
2.3 查询字节或字符数函数
- 字节:lengthb() ;
- 字符: length() ;
2.4 示例
字节 lengthb(‘A打豆豆’) | 字符 length(‘A打豆豆’) | 字符集编码 |
7 | 4 | gbk |
10 | 4 | utf8 |
2.5 一些数据类型的区别
- char 与 varchar:
- char为定长,输入的字符小于定义时,它会再后面补空值;
- varchar为存储变长数据,类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
- varchar(size) 与 varchar2(size):
- 数据库默认 size 表示字节;
- varchar可以存储空字符串;而varchar2将在数据库中varchar列可以存储空字符串的特性改为存储NULL值
- varchar(size) 与 nvarchar(size):
- nvarchar不受数据库字符集的影响。size单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。
- varchar(size biyte) 与 varchar2(size char):
- varchar(size byte) : 最大长度size个字节;
- varchar(size char):最大长度size个字符(中英文即可)。
类型 | 长度 | 单位 | 说明 |
char | 定长 | byte | 输入的字符小于定义时,它会再后面补空值; |
varchar(size byte) | 变长 | byte | varchar为存储变长数据,类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。 |
varchar(size char) | 变长 | char | size表示字符个数(中英文即可) |
varchar2 | 变长 | byte | 存储空字符串改为存储NULL值 |
nvarchar | 变长 | char | 不受数据库字符集的影响。size单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。 |
- ASCII对应的字符都和英文占字节类似。 ↩