达梦数据库LENGTH_IN_CHAR(对象的长度是否以字符为单位)总结

本文详细介绍了达梦数据库中LENGTH_IN_CHAR参数对VARCHAR类型对象长度的影响。当设置为1或Y时,VARCHAR长度以字符为单位,允许插入的字符数超过定义长度但不超过8188字节;设置为0或N时,长度以字节为单位。通过不同场景的测试,展示了在UNICODE_FLAG为0和1,LENGTH_IN_CHAR为0和1时,插入英文和中文字符的限制情况。
摘要由CSDN通过智能技术生成
---------------------------------------------------------------------------------------------
 LENGTH_IN_CHAR:
VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y表示是,0、N表示否。默认值为0。可选参数
 1 或Y:是,所有VARCHAR类型对象的长度以字符为单位。这种情况下,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过8188;
 0 或N:否,所有VARCHAR 类型对象的长度以字节为单位。
---------------------------------------------------------------------------------------------
创建实例的时候,该参数默认为0,varchar类型的字段长度是以字节为单位,那么该参数为0和1的时候,以及编码选择GB18030和UNICODE的时候,varchar类型字段存入的实际情况又是如何呢?下面通过不同的场景测试结果来给出一个确定的答案。
 
共用的建表语句如下:
 
create table test(c1 varchar(10)); table test(c1 varchar(10));
一、UNICODE_FLAG=0,LENGTH_IN_CHAR=0
 
 
 
 
 
 
--插入10个英文,正常插入10个英文,正常
insert into test(c1) values('ABCDEFGHIJ'); into test(c1) values('ABCDEFGHIJ');
--插入11个英文,错误插入11个英文,错误
insert into test(c1) values('ABCDEFGHIJA'); into test(c1) values('ABCDEFGHIJA');
--插入5个中文,正常插入5个中文,正常
insert int
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值