LENGTH_IN_CHAR 和 CHARSET 参数

深入理解LENGTH_IN_CHARCHARSET的影响情况 总结:可以看出在字段长度为9时就报错超出长度,只存储了4个中文字符。1,CHARSET=0总结:可以看出在字段NAME可以存储8个中文字符,实际最大存储长度为16,是长度定义的2倍。0,CHARSET=1总结:可以看出在CHARSET=1的情况下,一个中文占用3个字符,NAME只能存储两个中文两个英文字符,总长度8。1,CHARSET=1总结:可以看出,在CHARSET=1,可以存储3个中文字符的情况下,LENGTH_IN_CHAR=1,最终NAME字段实际存储长度为32,为定义长度的4倍。 阅读详情

一.参数介绍
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 

理解 LENGTH_IN_CHAR CHARSET 的影响情况 概念:LENGTH_IN_CHAR:VARCHAR 类型对象的长度是否以字符为单位。1:是,设置为以字符为单位时,定义长度并非真正按照字符长度调整,而是将存储长度值按照理论字符长度进行放大。所以会出现实际可插入字符数超过定义长度的情况,这种情况也是允许的。同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188; 0:否,所有 VARCHAR 类型对象的长度以字节为单位。 概念:CHARSET/UNICODE_FLAG 阅读详情

相关推荐

创建达梦数据库实例的相关参数建议

以上参数的详细解释请参阅官网。

我的炸串拌饼店 2079

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

--------------------------------------------------------------------------------------------- LENGTH_IN_CHAR: VARCHAR 类型对象的长度是否以字符为单位。取值:1、Y表示是,0、N表示否。默认值为0。可选参数 1 或Y:是,所有VARCHAR类型对象的长度以字符为单位。...

fachu121的专栏 1万+

DM基础知识拓展

极大提高查询速度。

weixin_55965898的博客 883

达梦数据库-深入理解LENGTH_IN_CHARCHARSET

达梦数据库深入理解LENGTH_IN_CHARCHARSET

小杨童鞋学习日记 3789

达梦数据库 LENGTH_IN_CHARCHARSET 参数学习

对于 LENGTH_IN_CHAR,如果您的团队可以接受“VARCHAR(n) 中的n是字节数”这一概念,并能在应用设计中考虑中英文差异(例如,定义 VARCHAR(300) 来存储100个汉字),则选择 LENGTH_IN_CHAR = 0 以获得最佳存储性能。例如,原 VARCHAR(10) 在GB18030下能存10个汉字,在UTF-8+字节模式下只能存3个。在 LENGTH_IN_CHAR=0 模式下,应用端进行长度校验时,应使用 CHAR_LENGTH() 而非 LENGTH()。

qq_38733647的博客 1834

达梦8初始化参数CHARSET,LENGTH_IN_CHAR

达梦8初始化参数CHARSET,LENGTH_IN_CHAR

qq_36252410的博客 3006

达梦初始化参数CHARSETLENGTH_IN_CHAR

在使用dminit工具或dbca图形化工具初始化达梦数据库实例时,有两个参数: 1. CHARSET/UNICODE_FLAG:字符集(可选0.GB18030,1.UTF-8,2.EUC-KR,默认为0,即GB18030); 2. LENGTH_IN_CHAR:varchar类型长度是否以字符为单位(可选Y/N,默认为N,即不以字符为单位); 在达梦数据库中,这两个初始化参数在实例创建完成后,不能修改,若发现选错了,只能重新初始化一个新的实例。 字符集比较好理解,就是字符的不同表示方式,具体区别可以

Downton97的博客 4162

达梦数据库CASE_SENSITIVE、LENGTH_IN_CHAR CHARSETCHARSET三个参数解释

CASE_SENSITIVE 1、参数简介 大小写敏感只能在数据库初始化的时候设置,设置后不能更改,若要更改只有重新初始化。 大小写敏感针对三种情况: 1)对象名 2)字段内容 3)字符串值 CASE_SENSITIVE LENGTH_IN_CHAR CHARSET 值: 1/Y:值为1表示区分大小写 0/N:值为0表示不区分大小写 图像化安装在截图位置设置 dminit初始化 help查看参数使用方法 数据库启动后可以通过以下语句查看大小写如何设置 SELECT CASE_SENSITIVE(); 2

qq_36192280的博客 2990

达梦数据库关于汉字存储的问题

前段时间在项目过程中遇到这样一个问题,数据库中有一张表,名称列定义为varchar(20),插入数据的时候提示列长度超出定义,这其实是一个比较常见的错误,插入数据的长度超过了数据库的定义长度,删减插入的长度或者修改列长度定义都可以解决。但是当时插入的字符数量比较少,就用length函数查询了一下插入的字符串长度,结果得到的结果为16,少于20但是为什么会提示这个问题呢?当时调整了名称列定义为varchar(40)后数据顺利插入数据库。 最近有空正好分析一下造成上次问题的原因,查询了达梦官方的资料可以确定主要

xiaoxiao_3_2的博客 3827

达梦数据库之是否以字符为单位

达梦数据库之是否以字符为单位

duanpian_dba的博客 3253

达梦数据库常用初始化参数与客户端工具使用

达梦数据库初始化时需注意字符集大小写敏感参数设置,这些参数在实例初始化后不可修改。大小写敏感参数CASE_SENSITIVE默认为1(敏感),设为0则不敏感。测试表明,大小写敏感影响表名、字段名的处理方式:敏感模式下会自动转换为大写,需加引号才能区分;不敏感模式下则忽略大小写差异。字段名同理,敏感模式下需严格匹配大小写。这些差异在数据库设计查询中需特别注意,初始化前应确认需求以避免后续修改困难。

卖炫迈的小男孩的博客 1405

达梦数据库Disql连接数据库方式

同时,存储的字节长度 8188 上限仍然不变,也就是说,即使定义列长度为 8188 字符,其实际能插入的字符串占用总字节长度仍然不能超过 8188。#以下配置是每次定向连接 DMDSC1 服务名的第一个服务(192.168.1.1:5236),当服务器故障后,以间隔1000毫秒的节奏尝试连接第一个服务60次,若连接成功则进行使用,若连接失败则连接下一个服务(192.168.1.3:5236)。一般情况下,数据库为 NORMAL 模式,如果不指定MOUNT 状态启动,则自动启动到OPEN 状态。

qq_33244108的博客 751

【精细版】达梦数据库之日常操作篇

达梦数据库的基本操作详解

会飞的树懒的博客 1万+

Docker环境下达梦数据库dm8的5个关键配置参数详解(附避坑指南)

本文详细解析了在Docker环境中部署达梦数据库dm8时,必须精准设定的五个核心初始化参数:PAGE_SIZE、EXTENT_SIZE、CASE_SENSITIVE、UNICODE_FLAGLENGTH_IN_CHAR。文章结合实战案例,阐述了每个参数对性能、兼容性存储效率的关键影响,并提供了具体的Docker配置命令与避坑指南,帮助开发者在容器化部署初期做出正确规划,避免后期因参数固化导致的数据迁移风险。

weixin_28835551的博客 270

达梦数据库初始化参数介绍

摘要 达梦数据库的初始化参数分为物理基因类可调整类。物理基因类(如页大小、字符集、时区等)一旦设定便无法修改,需在建库前慎重确定;可调整类(如密码、性能参数)后期可修改。数据库基本信息参数(如DB_NAME、INSTANCE_NAME、PORT_NUM、PATH、TIME_ZONE)虽非物理基因,但修改可能涉及文件系统或集群配置,建议一次性设定。存储结构参数(PAGE_SIZE、EXTENT_SIZE、LOG_SIZE)决定数据物理存储方式,建库后无法修改,需根据业务需求预先规划。字符与兼容性、页校验与冗

2201_76114510的博客 295

达梦数据库 LENGTH_IN_CHARCHARSET的理解

LENGTH_IN_CHAR&CHARSET

qq_44669390的博客 9170

达梦length_in_charcharset参数介绍

--执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。---执行失败,列[name]长度超出定义。

weixin_72867667的博客 1626

关于DM的CASE_SENSITIVE; LENGTH_IN_CHARCHARSET的理解测试

关于DM的CASE_SENSITIVE; LENGTH_IN_CHARCHARSET的理解

gouandi的博客 772
上一篇: DISQL 下各种连接数据库执行 SQL、脚本
下一篇: DM模式概念、作用和用法
frank2491
博客等级 码龄22年 1粉丝 · 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值