关于数据库的字符串
来源:互联网 发布:当你熟睡知乎 编辑:程序博客网 时间:2024/05/16 01:49
正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题.
但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境...这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar).对项目管理比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情.
使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别.
当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的.
所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储.
对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。
1.有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
2.n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
3.基于以上两点来看看字段容量
char,varchar 最多8000个英文,4000个汉字
nchar,nvarchar 可存储4000个字符,无论英文还是汉字
4.使用(个人偏好)
a.如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
b.能确定长度又不一定是ansi字符或者,那么用nchar;
c.对于超大数据,如文章内容,使用nText
d.其他的通用nvarchar
- 关于数据库的字符串
- 关于截取数据库字符串
- 关于数据库字符串查询
- 关于连接数据库字符串
- 关于数据库链接字符串
- 关于连接SQL Server2008数据库是连接字符串的问题。
- 数据库内置函数——关于字符串的操作
- 连接数据库的字符串
- 连接数据库的字符串
- 连接数据库的字符串
- 数据库的连接字符串?
- 数据库字符串的用法
- 关于指针,字符串,数据库文本默认值
- 关于数据库分割及截取字符串
- 关于PostgreSQL的字符串
- 关于字符串的复制
- 关于字符串的总结
- 关于字符串的处理
- JS快速查找法
- asp 利用ADO 实现数据分页
- 类似迅雷的悬浮窗口
- sql server 2005注入技巧集
- 函数指针
- 关于数据库的字符串
- 溢出漏洞扫描技术方法与实现(科普)
- 工具 & 网络游戏封包基础
- arraylist对象数组绑定
- 哈
- PC Camera开发日志(十一)------ TTPLAYER UI 分析
- Install ssh for AIX
- 文件编辑器 vi
- 安装了Dreamweaver CS4,先放出界面,感受和教程稍候放出