CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

数据存储长度不够?

楼主jaycam(好好工作,努力做人,找个老婆,要个孩子,完了此生!)2006-03-03 12:09:19 在 MS-SQL Server / 基础类 提问

我的一个字段:类型为nvarchar     长度为100  
  但是数据总是不能完全存储,只能存一半的数据,并且数据长度并没有达到指定长度。  
  不知道为何? 问题点数:20、回复次数:5Top

1 楼wgsasd311(自强不息)回复于 2006-03-03 12:20:48 得分 15

因为NVARCHAR类弄是以两个字节来存储一个字符的,你只要把NVARCHAR改为VARCHAR就不会了.Top

2 楼jaycam(好好工作,努力做人,找个老婆,要个孩子,完了此生!)回复于 2006-03-03 13:57:17 得分 0

我已将nvachar的长度设定到比字符串长度还要长,但还是不行。  
  我在上面写了“只能存储一半的数据”,其实是只差一个字符而已,这个字符就是出不来。Top

3 楼lsqkeke(可可)回复于 2006-03-03 14:03:55 得分 5

nvachar的长度设定到比字符串长度还要长,但还是不行。  
  --------------------  
  设定为:比实际字符串的长度的两倍还要长       都不行???Top

4 楼wgsasd311(自强不息)回复于 2006-03-03 14:19:39 得分 0

使用   Unicode   数据  
  Unicode   标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的   Unicode   标准   Unicode   数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。  
   
  对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示   256   个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。  
   
  每个   Microsoft®   SQL   Server™   排序规则都有一个对表示   char、varchar   和   text   值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。  
   
  Unicode   规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的   2   字节的模式   (65,536)。因为所有的   Unicode   系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用   Unicode   数据类型,可尽量减少字符转换问题。  
   
  在   Microsoft   SQL   Server   中,以下数据类型支持   Unicode   数据:    
   
  nchar  
   
   
  nvarchar  
   
   
  ntext    
   
   
  说明     这些数据类型的前缀   n   来自   SQL-92   标准中的   National(Unicode)数据类型。  
   
  nchar、nvarchar   和   ntext   的用法分别与   char、varchar   和   text   的用法一样,但在以下方面不同:    
   
  Unicode支持的字符范围更大。  
   
   
  存储   Unicode   字符所需要的空间更大。  
   
   
  nchar   和   nvarchar   列最多可以有   4,000   个字符,而不象   char   和   varchar   字符那样可以有   8,000   个字符。  
   
   
  Unicode   常量使用   N   开头来指定:N'A   Unicode   string'。  
   
   
  所有   Unicode   数据都使用相同的   Unicode   代码页。排序规则不控制用于   Unicode   列的代码页,仅控制比较规则和是否区分大小写等特性。    
  Top

5 楼jaycam(好好工作,努力做人,找个老婆,要个孩子,完了此生!)回复于 2006-03-03 14:21:51 得分 0

见笑了,只改了表里字段的长度,而没有改存储过程中参数的长度。:(Top

相关问题

  • String 类型的数据存储大小不够,用什么来对象来做,在线等
  • sql数据存储问题
  • 数据存储问题
  • 数据存储讨论
  • 关于数据存储!
  • 数据存储(在线等)
  • 关于数据存储
  • 数据存储问题
  • session.setAttribute( ) 数据存储问题
  • .net数据存储问题

关键词

  • 字符
  • 代码
  • 数据
  • 模式
  • unicode
  • 计算机
  • 编码
  • 系统
  • 转换
  • 语言

得分解答快速导航

  • 帖主:jaycam
  • wgsasd311
  • lsqkeke

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo