转自:http://www.cnblogs.com/lichang1987/archive/2009/03/04/1403166.html

最近在公司里做项目,遇到一个问题,建的数据库里的中文字符和音标显示为乱码,组里的人所有字符都用varchar表示,所以出现上诉问题,当改为Nvarchar后,问题得到解决。所以有必要把他们的区别再重新复习一遍。

char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

Varchar类型:Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。

由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

VARCHAR存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。

Nchar类型和Nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ASCII)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。

例如

varchar(n):变长型字符数据类型,存储最长长度为8,000 个字符。

举个例子:
insert a select '木子a'
--- 存储长度为5个字节,余下的3个字节全部释放
insert a select '木神易
----存储长度为6个字节,余下的2个字节全部释放
---意思是varchar变长字符数据类型与存储数据的实际长度是一致的

nvarchar(n):可变长度 Unicode 数据,其最大长度为 4,000 字符。
字节的存储大小是所输入字符个数的两倍,
就是说它是双字节来存储数据的。
如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。

varchar一般适用于英文和数字,Nvarchar适用中文和其他字符,其中N表示Unicode常量,可以解决多语言字符集之间的转换问题

varchar可以存中文,这是解决乱码问题的一种方法。至于原因,应该是和我装的Sql Server有关,因为在其他的人的SqlServer上并不会出错。原因大概有两种:
1:

安装时选了 Hide advice configuration options

然后再 Collation designator and order 中不是选择 Chinese_PRC
2:

在建表时没有指明某个字段的语言

方法 COLLATE Chinese_PRC_CS_AS_WS

示例:

create table test
(
a varchar(255) COLLATE Chinese_PRC_CS_AS_WS NULL,
b varchar(255) COLLATE sql_latin1_general_cp1_ci_as NULL
)

insert test values('中文','中文')

插入后 字段 a 为 中文 ,b 为 ??

转载于:https://www.cnblogs.com/Jenny90/archive/2013/03/19/2969419.html

char,varchar,nchar,nvarchar的区别相关推荐

  1. 数据库中char varchar nchar nvarchar的区别

    数据库中char varchar nchar nvarchar的区别 我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择char varchar nchar ...

  2. SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)

    SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总) 2008年10月14日 星期二 23:57 一.SQL中char varchar nchar nvar ...

  3. SqlServer中char,varchar,nchar,nvarchar的区别

    在数据库中建表时,总是习惯的将一些字段定义为nvarchar,但关于它和nchar的区别,却没有细究过,今天上网仔细了解一下做个总结: 1.n代表的是Unicode字符,可以解决多语言字符集之间的转换 ...

  4. char varchar nchar nvarchar区别

    char varchar nchar nvarchar区别 char与varchar的区别 (1) char的长度是不可变的,而varchar的长度是可变的.(也就是说,定义一个char[4]和var ...

  5. char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...

    本着低碳的原则将几个变量声明为nchar,结果发现尾巴上每次都多一大串空格,C#中不得不多次Trim劳心费神易出错.上网一查原来四种字符串看似相近其实讲究很多,其中以本帖最为全面,特此转发. 原帖:h ...

  6. char、nchar、varchar、nvarchar的区别和特点

    char.nchar.varchar.nvarchar的区别 对于程序中的string型字段,SQLServer中有char.varchar.nchar.nvarchar四种类型来对应(暂时不考虑te ...

  7. mysql的nvarchar_MySQL中char、varchar和nvarchar的区别

    一.char和varchar的区别 char是固定长度的,而varchar会根据具体的长度来使用存储空间,另外varchar需要用额外的1-2个字节存储字符串长度. 1). 当字符串长度小于255时, ...

  8. Sqlserver中char,nchar,varchar与Nvarchar的区别

    1. char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存 储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达到了 ...

  9. mysql server nchar_Sqlserver中char,nchar,varchar与Nvarchar的区别分析

    1. char类型: 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率极高,比如定义char(10),那么不论你存储的数据是否达 到了 ...

  10. oracle中varchar 和 nvarchar2的区别,Oracle中char,varchar,varchar2,nvarchar,nvarchar2的区别

    一.概述 1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文 ...

最新文章

  1. 解题报告:AcWing 1165. 单词环(01分数规划、hash、经验优化)
  2. [转贴]世上最强的中国式英文
  3. CSS+js弹出居中的背景半透明div层
  4. python的字符串类型本质上_4.3Python数据类型(3)之字符串类型
  5. Vue 凭什么成为 2020 年的一匹黑马
  6. 成员变量、局部变量、实例变量、静态变量、类变量、常量
  7. 引领全球增长的60大技术:机会、增长、投资、洞察
  8. 【原创】源智工作流-Silverlight流程设计器
  9. VxRack与VxRail遭受Power的“全面入侵”
  10. magento2 后台Grid点击column进行排序时会出现单个重复record
  11. LED液晶显示屏自动扫描测试软件特点,led显示屏控制软件自动校正是什么作用?...
  12. ibm doors api java_IBM Rational DOORS通过DXL进行二次开发初试(1)
  13. Tensorflow深度学习入门(5)——优化训练MNIST数据和调用训练模型识别图片
  14. Dango搭建个人博客:前言
  15. 【数理知识】kronecker 克罗内克积
  16. 三体视讯获得数千万元天使轮融资,打造新营销渠道“新媒超信”
  17. Java基础 -> Java死锁如何避免?
  18. mysql sql 备份表_SQL语句之备份表
  19. [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机
  20. 关于手机验证码的获取与验证方法

热门文章

  1. html 消除序号,JS实现删除一行数据页面序号重新排序功能。
  2. 三、动态构建GStreamer管道
  3. QQ勋章墙工具-支持所有版本完成QQ等级加速
  4. html messagebox确定取消,提示组件 - MessageBox 弹框 - 《ElementUI v2.15 使用手册》 - 书栈网 · BookStack...
  5. 直播实录|百度大脑EasyDL·NVIDIA专场 产品介绍及AI端计算技术架构解析
  6. cocos2d-html5教程之重要概念
  7. 接入微信SDK 获取用户定位
  8. 语音助手——评测指标
  9. Unity组件:Lens Flare 镜头光晕
  10. 使用python计算与你投缘与无缘的生肖