注册
达梦数据库LENGTH_IN_CHAR和CHARSET参数深入理解
技术分享/ 文章详情 /

达梦数据库LENGTH_IN_CHAR和CHARSET参数深入理解

Baldwin 2024/03/06 1120 2 0

一.参数介绍
1.1 LENGTH_IN_CHAR 参数
参数说明:
VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y 表示是,0、N 表示
否。默认值为 0。可选参数。是初始化参数,一旦设置将不能修改。
1.2 CHARSET 参数
参数说明:
字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-
KR。默认为 0。可选参数。是初始化参数,一旦设置将不能修改。
二.参数测试
2.1 初始化一个实例:
LENGTH_IN_CHAR=0,CAHRSET=0,即:使用 GB18030 字符集,字符以字节为单位
select * from vparameterwherename=LENGTHINCHAR;![image.png](https://download.dameng.com/ecofileserver/file/eco/preview/202403051501533QPB56A2P050QJSQ9L)selectfromvparameter where name= 'LENGTH_IN_CHAR'; ![image.png](https://download.dameng.com/eco-file-server/file/eco/preview/202403051501533QPB56A2P050QJSQ9L) select * from vparameter where name like ‘%CHARSET%’;
image.png
2.2 创建一张测试表
create table test(name varchar(10));
image.png
2.3 插入数据
insert into test values(‘qwertyuiop’);
insert into test values(‘ABCDEFGHIJ’);
insert into test values (‘abcdefghijk’);
image.png
测试插入 10 个英文字符成功,插入 11 个英文字符失败
2.4 测试插入中文字符
insert into test values (‘达梦数据库’);
insert into test values (‘达梦数据库棒’);
insert into test values (‘达梦数据库 g’);
image.png
2.5 创建表并测试插入数据
create table test(name varchar(10));
insert into test values( ‘ABCDEFGHIJqwertyuiop’ );
insert into test values( ‘ABCDEFGHIJqwertyuiopa’);
image.png
insert into test values (‘达梦数据库棒棒棒棒棒’);
insert into test values (‘达梦数据库棒棒棒棒棒棒’);
insert into test values (‘达梦数据库棒棒棒棒棒 A’);
image.png
3.1初始化一个实例:
LENGTH_IN_CHAR=0,CAHRSET=1,即:使用 UTF-8 字符集,字符以字节为单位
1.查看当前库字符集和字符设置
image.png
3.2 创建表并测试插入数据
image.png
插入 10 个英文成功,插入 11 个英文失败
3.3.插入中文,以及插入中文加英文测试
insert into test values( ‘罗陈鹏’ );
insert into test values( ‘罗陈鹏鹏’ );
insert into test values( ‘罗陈鹏 a’);
insert into test values( ‘罗陈鹏 aB’);
image.png
4.1初始化一个实例
LENGTH_IN_CHAR=1,CAHRSET=1,即:使用 UTF-8 字符集,字符以字符个数为单位
1.查看当前库字符集和字符设置
image.png
image.png
insert into test values(‘达梦数据库达梦数据库达梦数’);
insert into test values(‘达梦数据库达梦数据库达梦数据’);
insert into test values(‘达梦数据库达梦数据库达梦数 a’);
insert into test values(‘达梦数据库达梦数据库达梦数 aB’);
image.png
测试结论:

  1. 对于 GB18030 字符集:字符以字节为单位时,每个英文字母占用 1 字节,每个中文占用 2 字节;字符以字符为单位时,每个英文字母 实际占用 0.5 个 字符,每个中文 实际占用 1 个字符
  2. 对于 UTF-8 字符集:字符以字节为单位时,每个英文字母占用 1 字节,每个中文占用 3 字节;字符以字符为单位时,每个英文字符 实际占用 0. 25 个 字符,每个中文 实际占用 0.75 个字符
  3. 在默认情况下,varchar 类型以字节为单位时,两种字符集对于英文的支持是一样的,但 GB18030 对于中文会更加的友好
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服