ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CHARSET

CHARSET 深入理解达梦数据库参数CHARSET1.参数作用CHARSET参数的功能是字符集选项取值有012。0代表GB180301代表UTF-82代表韩文字符集EUC-KR。需要注意的是此参数在数据库创建成功后无法修改可以通过系统函数SF_GET_UNICODE_FLAG()或 UNICODE()查询设置的参数值。LENGTH_IN_CHAR是一个主要作用于varchar类型可变长类型数据的参数以存储汉字为例当字符集gb18030时若以字节为单位则varchar3能存下1个汉字1个英文。字符集为uft8时以字节为单位varchar3只能保存一个汉字。而当该参数设置为1时实际上varchar的精度会进行拓展在默认字符集下会变为定义长度的2倍uft8情况下会变为定位长度的4倍。24年q2版本之后该参数已经废弃默认值LENGTH_IN_CHAR0所有数据库均按照默认以字节为单位进行初始化。实验步骤准备两个实例CHARSET分别为1、0。在 之前我们已经有了CHARSET1的实例现在创建CHARSET0的实例。./dminitPATH/dmdata/data/DM_CHARSETDB_NAMEDM_CHARINSTANCE_NAMEDM_CHARSETPORT_NUM5237LOG_SIZE256CASE_SENSITIVE0CHARSET0PAGE_SIZE16SYSDBA_PWD1qaz2WSXSYSAUDITOR_PWD1qaz2WSX注册服务./dm_service_installer.sh-tdmserver\-dm_ini/dmdata/data/DM_CHARSET/DM_CHAR/dm.ini\-pCHAR启动服务后 查询新实例的CHARSET参数值如图字符字节长度对比在两个实例中执行相同的SQLSELECT达梦数据库AS文本,LENGTH(达梦数据库)AS字符个数,LENGTHB(达梦数据库)AS字节长度;当CHARSET0时的执行结果是字符长度为5字节长度为101个汉字两个字节当CHARSET1时的执行结果是字符长度为5字节长度为151个汉字三个字节字段长度溢出测试CREATETABLEtest_charset(idINT,col_nameVARCHAR(4)-- 分配 4 个字节空间);-- 尝试存入 2 个中文汉字达梦INSERTINTOtest_charsetVALUES(1,达梦);在CHARSET0的实例下执行时会执行成功是因为GB18030下没有超出长度上限。在CHARSET1的实例下执行语句时会出现长度超出定义的报错就是因为在UTF-8下达梦这两个字占用了2×3个字节VARCHAR4无法装入。达梦社区https://eco.dameng.com
返回列表