KingbaseES字符编码解释

目前KingbaseES支持ASCII、GBK、GB18030、UNICODE这4种编码方式, 标准的UNICODE应包括UTF-8、UTF-16等一系列编码方式,但目前KingbaseES支持的是UNICODE中的UTF-8,即可以理解,目前在KingbaseES中的UNICODE就是UTF-8;在实际应用中,开发人员在定义字段长度时,需对编码字符占位有一定了解,例如,GBK中一个汉字占两个字节,UTF-8中,一个汉字占3个字节。
DB2、MS SQL、Sybase等数据库在定义char()数据类型的时候,默认是以byte解释。即定义char(n)时,在系统中开辟n字节大小的空间。而在KingbaseES中,定义char类型数据时,是兼容Oracle的,即在定义char类型数据时,可以通过char(n byte)或char(n char)指定char类型数据是以字节解释,还是字符解释。 kingbaseES在不指定char类型数据的解释方式时,则按照配置参数CHAR_DEFAULT_TYPE的取值决定,遵照SQL标准,默认的是char(n char)类型,即char类型数据作字符解释。 所以会看到:
1.当KingbaseES字符编码为GBK,当默认char_default_type=’char’时,
create table fids(name varchar(5));
insert into fids values(‘金仓数据库’);
insert into fids values(‘人大金仓数据库’);
ERROR: 类型VARCHAR(5)的值过长

当char_default_type=’byte’时,一个汉字占二个字节
create table fidss(name varchar(6));
insert into fidss values(‘数据库’);
insert into fidss values(‘人大金仓’);
ERROR: 类型VARCHAR(6 byte)的值过长

2.当数据库字符编码为UNICODE,当char_default_type=’char’时,一个汉字表示一个字符
create table fidst(name varchar(5));
insert into fidst values(‘金仓数据库’);
insert into fidst values(‘人大金仓数据库’);
ERROR: 类型VARCHAR(5)的值过长

当char_default_type=’byte’时,一个汉字占三个字节
create table fidsa(name varchar(6));
insert into fidsa values(‘数据’);
insert into fidsa values(‘数据库’);
ERROR: 类型VARCHAR(6 byte)的值过长
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值