`

db2汉字存储

阅读更多
转自: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异常汇总-中文

    db2中文学习资料(V97)

    ppt文档,已压缩成PDF文件,对V97整体架构做了描述,包括存储、分区、备份、XML应用、高可用性等功能,适用于DB2初学者,售前支持,或对V97新功能不熟悉的管理员。

    db2数据库入门教程(官方中文版)

    第 1章 – DB2 Express-C是什么?..........................................................................................13 1.1免费开发、部署和分发… 无限制!.............................................

    db2数据库入门官方教程(中文版)

    第 1章 – DB2 Express-C是什么?..........................................................................................13 1.1免费开发、部署和分发… 无限制!.............................................

    db2 9 731 中文教材

    学习如何创建 DB2 数据库,以及存储表、索引、和数据的不同机制。本教程主要关注分区、压缩和 XML 方面的知识。 • 第 3 部分:数据访问 本教程将带领您学习管理 DB2 对象的各个步骤,其中包括索引、约束、参照完整...

    DB2 OLTP系统的物理设计最佳实践(中文版)

    最佳实践 面向联机事务处理 OLTP 环境的物 理数据库设计 v 版权所有 IBM Corp 2008 2011 目录 图表 8 执行摘要 1 物理数据库设计简介 3 OL TP 工作负载特征 5 物理数据库设计 7 ...DB2 pureScale 特性 ...

    DB2帮助文档 中英双语

    由于IBM产品中文帮助很少,所以上传该文档供大家学习使用。

    DBVisualizer9.0.2的64位破解版_Part02

    该压缩文件中加入了查看存储过程时,中文注释为乱码的解决办法(通过修改DBVisualizer的字体)。 该工具简介如下: DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具,内置SQL语句编辑器(支持语法高亮),...

    Oracle经典教程 中文 PDF清晰版

    Oracle是基于对象的关系型数据库,Oracle也是用表的形式对数据存储和管理,并且在Oracle的操作中添加了一些面向对象的思想。Oracle数据库是Oracle(中文名称叫甲骨文)公司的核心产品,Oracle数据库是一个适合于大中...

    SqlDbx-3.60_简体中文破解版

    支持Oracle,Sybase ASE, IBM,DB2/UDB, MicrosoftSQL Server,MySQL 和ODBC数据源。 可以看到库中有多少表、多少存储过程、多少触发器、多少视图、多少函数,可以直接看到每个表的数据行数,可以导出查询结果的insert...

    Oracle完全教程

    Oracle是基于对象的关系型数据库,Oracle也是用表的形式对数据存储和管理,并且在Oracle的操作中添加了一些面向对象的思想。 Oracle数据库是Oracle(中文名称叫甲骨文)公司的核心产品,Oracle数据库是一个适合于大...

    SQL必知必会(第3版 中文高清版)

    第19章 使用存储过程  第20章 管理事务处理  .第21章 使用游标  第22章 了解高级sql特性  附录a 样例表脚本   a.1 样例表   a.2 获得样例表   a.2.1 下载可供使用的microsoft access mdb文件   ...

    Shark DB Expert

    大型数据库如:Oracle,Sybase,MS SQL,DB2 中型数据库MS_Access,MySQL 桌面型数据库Paradox,DBF系列数据库,MS Execl,Text,可以直接托放解释 其他支持SQL 92标准的数据库 2. 遍历数据库中表、视图、存储...

    citrix 中文管理操作手册

    IBM DB2 130 保护网络通信 130 保护客户端服务器通信 131 使用 SecureICA 132 启用 SSL/TLS 协议 132 配置会话数据加密 133 为 ICA 加密设置策略 134 配置服务器和客户端之间的 SSL/TLS 134 实现 SSL Relay 的任务...

    Shark DB Expert 2.7

    大型数据库如:Oracle,Sybase,MS SQL,DB2 中型数据库MS_Access,MySQL 桌面型数据库Paradox,DBF系列数据库,MS Execl,Text,可以直接托放解释 其他支持SQL 92标准的数据库 2. 遍历数据库中表、视图、存储...

    IBM WebSphere Portal门户开发笔记01

    8、查看DB2存储过程源代码的SQL 380 9、获取建表脚本 380 10、获取DB2数据库日志操作方法 380 二十一、LINUX相关 383 1、从命令模式切换到视图模式 383 二十二、TDS相关 383 1、LINUX下启动TDS管理界面 383 2、LINUX...

    邮件服务器Turbomail 3.9.2

    符合J2EE标准,可运行在各主流的J2EE服务器上,如:Tomcat,WebLogic,WebSphere,JBoss 提供多种用户存储模式,包括:文本,多种数据库(MySQL,Oracle,SQLServer,DB2,Sybase),LDAP 等存储模式 内置了强大的...

    sql2005教程

    中文系统上重装SQL Server 2005 英文版的问题 (转)使用公用表表达式的递归查询(SQLSERVER2005) 2005Beta2概览 sql server 2005 建立链接服务器 SQL Server 2005:数据类型最大值 SQL Server 2005:向系统表说...

    数据库系统-招标参数---模板.doc

    " " " "支持中文汉字内码,符合双字节编码; " " " "数据库产品应具有良好的图形化用户界面(GUI) " " " ",方便对数据库进行管理/数据库应具有良好的自 " " " "我管理,自我配置与自我调优能力 " " " "除了支持...

Global site tag (gtag.js) - Google Analytics