为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:0X7000D
【操作系统】:麒麟V10
【CPU】:鲲鹏920
【问题描述】*:
想了解达梦varchar存储数据长度的问题
达梦最新版已废弃length_in_char字段,那么默认按字节长度存储,
如果设置为varchar(10)
按照官方说法,UTF8模式下,可以存10个英文或3个中文
是否有像mysql一样的机制,varchar(10)可以存10个英文或中文
比如用户前端传值最多允许10个字(英文或中文),那么数据库字段必须要设置30吗?
之后在数据库字段长度设计时,可能出现中文的字段长度都要乘3来设置吗?
新版本可以通过DTS数据类型映射将varchar映射为nvarchar来解决mysql数据长度的问题,或者将原有表结构正常迁移过来后,统一用SQL进行修改
SELECT 'ALTER TABLE '||A.OWNER||'.'||A.TABLE_NAME||' MODIFY '||A.COLUMN_NAME||' NVARCHAR('||A.DATA_LENGTH||');'
FROM DBA_TAB_COLUMNS A
WHERE OWNER='用户名' AND DATA_TYPE LIKE 'VARCHAR';
创建的时候指定成以字符存储就行了
varchar(10 char)
带char就是字符存储,默认是字节存储

可以参考一下这个链接进行调整
https://eco.dameng.com/community/post/20220929090958J4ZBX6X7RL5MCIC63R