LENGTH_IN_CHAR 和 CHARSET 参数

本文介绍了达梦数据库中LENGTH_IN_CHAR和CHARSET两个参数的作用及测试情况。LENGTH_IN_CHAR决定VARCHAR类型长度单位,而CHARSET选择字符集。通过不同配置组合,测试了在GB18030和UTF-8字符集下,字符以字节或字符为单位对英文和中文插入的影响。结论表明,默认情况下,英文插入表现一致,但GB18030对中文更友好。

一.参数介绍
1.LENGTH_IN_CHAR 参数
参数说明:
VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y 表示是,0、N 表示
否。默认值为 0。可选参数。是初始化参数,一旦设置将不能修改。
2.CHARSET 参数
参数说明:
字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-
KR。默认为 0。可选参数。是初始化参数,一旦设置将不能修改。
二.参数测试
A.初始化一个实例:
LENGTH_IN_CHAR=0,CAHRSET=0,即:使用 GB18030 字符集,字符以字节为单位
select * from v$parameter where name= 'LENGTH_IN_CHAR';

select * from v$parameter where name like '%CHARSET%';

 

1. 创建一张测试表
create table test(name varchar(10));

 

2. 插入数据
insert into test values('qwertyuiop');
insert into test values('ABCDEFGHIJ');
insert into test values ('abcdefghijk');

 

测试插入 10 个英文字符成功,,插入 11 个英文字符失败
3. 测试插入中文字符,
insert into test values ('达梦数据库');
insert into test values ('达梦数据库棒');
insert into test values ('达梦数据库 g');

 

B.初始化一个实例:
LENGTH_IN_CHAR=1,CAHRSET=0,即:使用 GB18030 字符集,字符以字节为单位
1.查看当前库字符集和字符设置
select * from v$parameter where name in ('LENGTH_IN_CHAR','GLOBAL_CHARSET');

 

2.创建表并测试插入数据
create table test(name varchar(10));
insert into test values( 'ABCDEFGHIJqwertyuiop' );
insert into test values( 'ABCDEFGHIJqwertyuiopa');

 

insert into test values ('达梦数据库棒棒棒棒棒');
insert into test values ('达梦数据库棒棒棒棒棒棒');
insert into test values ('达梦数据库棒棒棒棒棒 A');

 

C.初始化一个实例:
LENGTH_IN_CHAR=0,CAHRSET=1,即:使用 UTF-8 字符集,字符以字节为单位
1.查看当前库字符集和字符设置

 

 

插入 10 个英文成功,插入 11 个英文失败

3.插入中文,以及插入中文加英文测试
insert into test values( '罗陈鹏' );
insert into test values( '罗陈鹏鹏' );
insert into test values( '罗陈鹏 a');
insert into test values( '罗陈鹏 aB');

 

D.初始化一个实例:
LENGTH_IN_CHAR=1,CAHRSET=1,即:使用 UTF-8 字符集,字符以字符个数为单位
1.查看当前库字符集和字符设置

 

2.创建表并测试插入数据
create table test(name varchar(10));
insert into test values('abcdefghigabcdefghigabcdefghigabcdefghig');
insert into test values('abcdefghigabcdefghigabcdefghigabcdefghiga');

 

insert into test values('达梦数据库达梦数据库达梦数');
insert into test values('达梦数据库达梦数据库达梦数据');
insert into test values('达梦数据库达梦数据库达梦数 a');
insert into test values('达梦数据库达梦数据库达梦数 aB');

 

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

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。icon-default.png?t=M4ADhttps://eco.dameng.com 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值