Oracle:字符 & 字节

一、验证char长度限制

  1. 创建一个表,char类型的
    create table t(ename char(4));
  2. 插入数据
    insert into t2 values('abcd');
    insert into t2 values('abcde');

结论:长度5超过字符定义限制

二、AL32UTF8 时字节长度

  1. 查看字符集
    select * from nls_database_parameters where parameter like '%CHARACTERSET%';
  2. 插入数据
    insert into t values('中国');

结论:AL32UTF8下,1个汉字3个字节,2个汉字6个字节,长度超过字符定义限制

三、修改字符集为ZH16GBK

  1. 修改字符集必须在RESTRICT模式下,否则会报错
  2. 重启库至RESTRICT模式
  3. 修改字符集
    alter database character set INTERNAL_USE ZHS16GBK;
  4. 重启数据库
  5. 验证

注意:此处为实验,平时禁止修改字符集,避免生产数据出现乱码

四、ZH16GBK 时字节长度

插入数据
insert into t2 values('中国');
insert into t2 values('中国人');

结论:ZH16GBK下,1个汉字2个字节,3个汉字6个字节

五、字符和字节区别

  1. 创建测试表2
    create table t2(ename char(4 char));
  2. 测试
    insert into t values('中国');
    insert into t2 values('中国');

结论:中国虽然是6个字节,但是满足4个字符的条件,没有报错

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值