MySQL、Oracle中一个汉字到底占多少个字节,又该如何查看

目录

一个字符占多少字节由什么决定。

字段长度和字节是什么关系

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 编码集与字节关系

  1.  GBK : 一个汉字 = 2个字节,英文是一个字节;
  2.  UTF-8:一个汉字 = 3个字节,英文是一个字节;

1.3 查询字节或字符数函数

  1. 字节:length() ;
  2. 字符: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。

  1. SIMPLIFIED CHINESE_CHINA.ZHS16GBK :一个汉字占用两个字节
  2. SIMPLIFIED CHINESE_CHINA.AL32UTF8:一个汉字占用三个字节

2.3 查询字节或字符数函数

  1. 字节:lengthb() ;
  2. 字符: length() ;

2.4 示例

  • 字节 lengthb(‘A打豆豆’) 字符 length(‘A打豆豆’) 字符集编码
    7 4 gbk
    10 4 utf8

2.5 一些数据类型的区别

  1. char 与 varchar:
    1. char为定长,输入的字符小于定义时,它会再后面补空值;
    2. varchar为存储变长数据,类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
  2. varchar(size) 与 varchar2(size):
    1. 数据库默认 size 表示字节;
    2. varchar可以存储空字符串;而varchar2将在数据库中varchar列可以存储空字符串的特性改为存储NULL值
  3. varchar(size) 与 nvarchar(size):
    1. nvarchar不受数据库字符集的影响。size单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。
  4. varchar(size biyte) 与 varchar2(size char):
    1. varchar(size byte) : 最大长度size个字节;
    2. varchar(size char):最大长度size个字符(中英文即可)。
类型 长度 单位 说明
char 定长 byte 输入的字符小于定义时,它会再后面补空值;
varchar(size byte) 变长 byte varchar为存储变长数据,类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。
varchar(size char) 变长 char size表示字符个数(中英文即可)
varchar2 变长 byte 存储空字符串改为存储NULL值
nvarchar 变长 char 不受数据库字符集的影响。size单位是字符,而且不管是汉字还是字母,每个字符的长度都是2个字节。

  1. ASCII对应的字符都和英文占字节类似。

猜你喜欢

转载自blog.csdn.net/besto229/article/details/78345171
今日推荐