博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server中,varchar和nvarchar如何选择?
阅读量:7091 次
发布时间:2019-06-28

本文共 800 字,大约阅读时间需要 2 分钟。

varchar在 中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到中,如果字段的类型为varchar,则只会占用一个字节,而如果字段的类型为nvarchar,则会占用两个字节。

 

  正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??)。而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的。多数情况下,在布署的时候也不会有问题。
 
  但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??)。而且一般情况下你不会知道这是因为你采用了错误的数据类型来存储所造成的,你会试着去装中文字体,试着去设置操作系统的语言环境。这些都不能解决问题,唯一能解决问题的是把数据库字段的类型个性为nvarchar(或者nchar)。对 比较熟悉的朋友应该都知道,到布署阶段再来修改数据库是一个很恐怖的事情。
  
  使用nvarchar的另一个非常好处就是在判断字符串的时候可以不需要考虑中英文两种字符的差别。
 
  当然,使用nvarchar存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的。
 
  所以在Design的时候应该尽量使用nvarchar来存储数据.只有在你确保该字段不会保存中文的时候,才采用varchar来存储

转载于:https://www.cnblogs.com/tianlangshu/archive/2012/04/24/2468864.html

你可能感兴趣的文章
重置SQL Server表中的自动编号ID为1
查看>>
PL/SQL Developer如何连接64位的Oracle图解
查看>>
如何使用sublime编辑器运行python程序
查看>>
haproxy配置文件的语法检查
查看>>
wget
查看>>
Java 二进制,八进制,十进制,十六进制相互转换
查看>>
Java面试题之十一 (转)
查看>>
13个mysql数据库的实用SQL小技巧
查看>>
设计模式----抽象工厂模式
查看>>
struts1实现上传
查看>>
Android4.4新的特性,在应用内开启透明状态栏和透明虚拟按钮。
查看>>
cmd(小黑框)的操作
查看>>
下拉列表引用数据库数据 JS编写随机生成二维码
查看>>
webp 解码性能对比
查看>>
PHP和MySQL实现消息队列
查看>>
iOS9.0适配
查看>>
点击除了元素以外的元素隐藏元素
查看>>
查看兼容性情况的网站
查看>>
iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)
查看>>
九大排序之c语言版
查看>>