在数据库中建表时,总是习惯的将一些字段定义为nvarchar,但关于它和nchar的区别,却没有细究过,今天上网仔细了解一下做个总结:

1.n代表的是Unicode字符,可以解决多语言字符集之间的转换问题。带上'n',表示你的字符串中汉字、英文字符、数字等等,存储时都是占用两个字节,这是为了防止出现乱码考虑的,而不带'n'的(char,varchar),存储时英文字符、数字占用一个字节,汉字占用两个字节。

2.‘var‘,显然是可变的意思,在sqlserver中就代表了可变存储,比如,定义了name字段:varchar(60),为其填充数据张三,则只占用6个字节,剩余54个字节未被占用(倒是节省了存储空间喔),对比而言,没有'var'的就是固定存储,上例如果定义name字段为char(60),同样填充数据张三的话,虽然也是占用6个字节,但剩余54个字节会用空格填充,也就是说,定义为固定存储的情况下,无论实际用了多少存储空间,所有空间都会被占用。

3.存储容量对比:char,varchar最多8000个英文,4000个汉字;nchar,nvarchar可存储4000个字符,无论英文还是汉字。

4.速度对比:固定存储比可变存储速度上快的多,但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉。

实际中使用的一般是varchar和nvarchar,二者再做个对比:

1.存储方式上,nvarchar是按字符存储的,varchar是按字节存储的。

2.存储量上,varchar节省空间,因为存储大小为字节实际长度,而nvarchar是双字节存储。

3.使用中,如果确定存储内容都是英文字符而没有汉字等语言符号,建议用varchar,含有汉字使用nvarchar(避免乱码)

以上是网上浏览加个人理解后的总结,重要的是理解了'n'与'var'的含义。

转载于:https://www.cnblogs.com/baweier2011/archive/2012/10/27/2742684.html

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

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

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

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

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

  3. char varchar nchar nvarchar区别

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

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

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

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

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

  6. oracle数据库中nvarchar,Oracle数据库中的varchar,varchar2,nvarchar,nvarchar2区别及用

    [varchar,varchar2 ] 联系: 1. varchar/varchar2用于存储可变长度的字符串 比如 varchar(20),存入字符串'abc', 则数据库中该字段只占3个字节,而不 ...

  7. SQL中char\varchar\text与nchar\nvarchar\ntext的区别

    SQL中char\varchar\text与nchar\nvarchar\ntext的区别 定义 特点 定义 char char(n)是长度不可变的,用于表示非Unicode字符数据.n代表该数据类型 ...

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

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

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

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

最新文章

  1. python模拟鼠标拖动_python模拟鼠标拖动操作
  2. RabbitMQ一个简单可靠的方案(.Net Core实现)
  3. Shebang来Java了吗?
  4. “System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results fro
  5. SAP License:账号锁定的处理
  6. CVPR 2017精彩论文解读:综合使用多形态核磁共振数据的3D生物医学图像分割方法 | 分享总结...
  7. java双重循环去重_java 中 list集合去重
  8. html样式格式文件的后缀名是( ),什么是HTML格式?什么是CSS格式?
  9. CentOS7下安装H2o的经历(How did I install the h2o in centos7?)
  10. 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
  11. Day51:HEIL AI
  12. 机器学习之朴素贝叶斯(一):朴素贝叶斯的介绍、概率基础(拉普拉斯平滑)、sklearn朴素贝叶斯实现API、朴素贝叶斯分类的优缺点、文本的特征工程
  13. 【计算机组成原理】-09
  14. 小程序页面卡顿解决问题
  15. 针对 Telnet 协议的威胁观察
  16. VFS基础学习笔记 - 5.读文件过程
  17. JavaScript小案例程序保存(完整代码+效果展示)
  18. 小学计算机教案用画笔绘画,电脑美术教学设计《神奇的画笔》
  19. android listview动态加载数据,ListView动态加载数据
  20. 通过HttpPost发送http请求实现文件上传

热门文章

  1. Jmeter接口测试实战分享,你一定要知道的问题总结!
  2. 接口测试实战总结,绝对值得收藏
  3. swing tree 去掉双击默认展开 关闭_如何保护自己的电脑,关闭危险端口(一)
  4. 计算机控制系统复习提纲,《计算机控制系统》复习要点
  5. setup the printer on ubuntu for uniofsurrey
  6. houdini 做选点效果
  7. 基于深度卷积神经网络的大豆叶斑病识别
  8. java 微信 jssdk 分享朋友圈_微信JS-sdk分享到朋友圈无效
  9. java 线程池的使用_Java 使用线程池执行若干任务
  10. leetcode最大矩形_柱状图中的最大矩形