有一个关于数据库的VARCHAR类型存储长度的问题?

最近在使用国产数据库达梦数据库遇到一个问题

数据库中VARCHAR 字段存储字符的长度受

CHARSET和LENGTH_IN_CHAR 的影响

CHARSET代表字符集编码 默认是GBK 一个中文字符用三个字节表示

LENGTH_IN_CHAR 代表是否以字节存储,0代表字节 1代表字符

那么问题来了 如果一个字段 长度为10 VARECHAR filed(10)

字符集编码是UTF-8 且以字节存储的时候

实际上只能插入3个中文字符 10个英文字符

如果转换以字符存储的话反而能存储40个英文字符和13.3个中文字符 ?

想要达到的需求就是 如果规定了长度是10 那么不管英文中文都只能存储十个

不知道这个怎么实现?

阅读 2.6k
2 个回答

CREATE TABLE your_table (
your_column CHAR(10) CHARSET UTF8 LENGTH_IN_CHAR 0
);
如果规定了长度是10那么不管英文中文都只能存储十个,用CHAR试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏