转自:
http://topic.csdn.net/u/20090326/09/d8c05960-4c7f-49ef-900d-04a1ef1eb024.html
大家可能都知道,数据库的varchar字段在保存中文时,字段最大长度和可以保存的字符的最大数量可能是不相等的。
在Oracle中,varchar(100)可以保存50个纯汉字或100个纯字母或者数字。如果希望长度100的varchar保存100个汉字,可以将字段类型设置为nvarchar(这个不太确定,但是oracle确实有这个功能。n表示国际化的意思)
而在db2尤其是as400服务器下的db2,是怎么个情况,今天我们进行了一下测试。下面是测试报告:
数据库VARCHAR字段长度设置测试报告
测试时间:2009-01-16 14:00
测试用例:
数据库表:UserInfo 字段:password varchar(32)
操作记录:
执行SQL:
insert into usrinfo(id,usr_id,password) values('xxxx','xxxx','我使中国热我使中国热我使中国热我'); --失败 16汉字
insert into usrinfo(id,usr_id,password) values('xxxx','xxxx','我使中国热我使中国热我使中国热'); --成功 15汉字
update usrinfo set password='我使中国热我使中国热我使中国热1' where id='xxxx'; --失败 15汉字1数字
update usrinfo set password='我使中国热我使中国热我使中国热a' where id='xxxx'; --失败 15汉字1字母
update usrinfo set password='012345678901234567890123456789' where id='xxxx'; --成功 30数字
update usrinfo set password='01234567890123456789012345678901' where id='xxxx'; --成功 32数字
update usrinfo set password='012345678901234567890123456789我' where id='xxxx'; --失败 30数字1汉字
update usrinfo set password='0123456789我使中国热0123456789' where id='xxxx'; --成功 20数字5汉字
select length(password) from usrinfo where usr_id='xxxx' ---32
update usrinfo set password='0我1使2中3国4热' where id='xxxx'; --成功
select length(password) from usrinfo where usr_id='xxxx' ---25
结论:
1 每个汉字占用2个字符空间
2 每段汉字再额外占用2个字符空间(可能是辨别标识?)
3 每个字母或数字占用1个字符空间
----->假设需要保存1000个字(汉字、字母、数字都允许),那么数据库字段最少的长度应该是:
最极限的情况是:单个汉字和字母(数字)连续间隔出现,即形式如下:
汉1字2是3好a.......(假设总字符数是x,x是偶数)
那么汉字个数是x/2,字母数字个数是x/2,为保证该字段的insert和update不报错,字段最少的长度是===>
x/2*2 汉字占用字符数
+
x/2*1 字母数字占用字符数
+
x/2*2 每段汉字占用的标识位数
=2.5x
===================>>>所以,如果需求要求可输入1000个字符,那么数据库保证不出错误的长度应该是2500,而不是我们通常认为的2000!!
分享到:
相关推荐
### DB2中文支持的字符 #### 背景与概述 DB2是IBM公司开发的一款关系型数据库管理系统,被广泛应用于各种操作系统环境如Linux、UNIX和Windows等。随着全球化的发展,支持多语言尤其是中文成为了必不可少的功能之一...
"DB2官方中文参考手册1"提供了DB2 v10版本的详细文档,涵盖了多个主题,帮助用户深入理解和操作DB2系统。以下是根据压缩包中文件名称所对应的各个手册的主要内容概览: 1. **DB2Connect-db2c0c1010.pdf** - 这份...
### Toad for DB2 解决方案知识点解析 #### 一、Toad for DB2 概述 Toad for DB2 是一款专为DB2数据库设计的高效开发与管理工具,适用于DBA(数据库管理员)及开发人员。该工具集成了模式浏览、SQL编程、调试、DBA...
DB2_v105 官方中文参考手册(1) 是一套全面的文档集合,针对IBM的DB2数据库管理系统V10.5版本,提供了详尽的中文解释和指南。这套文档是IBM官方发布的,因此具有权威性和准确性,是开发者、数据库管理员(DBA)和技术...
DB2是IBM开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。"db2v9 中文参考资料"提供了一系列的中文文档,涵盖了DB2的基础到高级应用,旨在帮助用户更好地理解和操作DB2 V9版本。以下是这些文档中...
"DB2_V95中文官方文档"是一套完整的中文版DB2 V9.5版本的学习资料,对于那些英语阅读困难或者在寻找官方文档时遇到困扰的用户来说,这是一个非常宝贵的资源。 1. **DB2MessageRefVol2-db2m2c950.pdf**:这份文档...
【DB2 中文学习资料(V97)】 在IT领域,DB2是IBM公司推出的一款关系型数据库管理系统,广泛应用于企业级数据管理。本学习资料聚焦于DB2的V97版本,提供了全面的系统架构解析,以及关键功能的详细介绍,非常适合DB2...
DB2是IBM开发的一款关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。这份"DB2_中文参考资料(比较全)"包含了官方的中文版文档,为学习和使用DB2提供了极大的便利。以下是这份资源中可能涵盖的一些...
### DB2Express-C 中文帮助知识点总结 #### 一、DB2Express-C 概述 - **免费特性:**DB2Express-C 提供了免费的开发、部署和分发服务,不受任何限制。 - **技术支持:**用户可以获取基本的技术支持,但对于高级...
【DB2 730 中文版本教材】是一份详细的教学文档,主要涵盖了DB2数据库的基础知识和关键技能,特别适合准备DB2认证考试的学习者。文档内容包括七大部分,全面解析了DB2规划、安全性、数据访问、数据处理、对象处理、...
然而,在实际开发过程中,特别是在使用Flask-SQLAlchemy连接IBM DB2数据库时,可能会遇到中文字符存储时出现乱码的问题。本文将详细介绍该问题的原因及两种解决方案。 #### 二、问题原因分析 ##### 1. 字符集配置...
DB2是一款由IBM开发的关系型数据库管理系统,广泛应用于企业级数据存储和管理。这篇中文教程“DB2中文教程(从入门到精通)”涵盖了在Linux、Unix和Windows三种操作系统环境下的使用方法,旨在帮助初学者和进阶者...
【DB2_v972 官方中文参考手册(2)】是针对IBM的DB2关系型数据库管理系统的一个详尽的文档集合,该版本为V9.7.2。由于文件大小限制,手册被分成了两个压缩包,这是其中的第二个部分。这个压缩包包含了多个与DB2 V972...
DB2是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。这款数据库系统以其稳定性、安全性和高性能而著称,尤其在金融、电信、医疗等关键领域有广泛应用。DB2的版本更新频繁,每个新版本...
这个压缩包“DB2 Express C 9.7 3rd Edition Chinese.rar”包含了《DB2 Express C 9.7 中文第三版》的PDF文档,旨在为中文用户提供了全面的学习资源,帮助他们快速掌握DB2的基础知识和应用技巧。 首先,我们来了解...
- **XML Extender**:自DB2 V8起引入,支持通过XML/SQL函数访问XML数据,可将XML数据作为LOB或拆解成关系型列存储。 - 在DB2 9中免费提供。 - 与pureXML不同。 - **DB2 NetSearch Extender**: - 提供基于字典的...
本中文教材《DB2-730中文教材-WATCH-watch.pdf》旨在帮助读者了解DB2的产品和工具,以及如何处理不同类型的数据应用程序、数据仓库和OLAP概念。 一、DB2产品和工具基础 DB2包括多个版本,针对不同的操作系统平台,...
综上所述,这份“IBM内部关于DB2数据库的中文翻译版资料”是一份详尽的DB2 GUI操作手册,不仅适合初学者入门,也适合有经验的DBA和开发者深入了解和掌握DB2数据库的管理与开发技巧。通过这份资料的学习,用户可以...